2010-07-13 Miguel de Icaza <miguel@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-13  Miguel de Icaza  <miguel@novell.com>
2
3         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
4         the MONO_ENV_OPTIONS to set the --llvm flag.
5         
6 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
7
8         * driver.c : windows build fix for --with-moonlight.
9
10 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11
12         * mini.c|h:
13         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
14         that reach native code from a reverse pinvoke.
15
16 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
17
18         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
19
20         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
21         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
22         Fixes #620864.
23
24         * generics.cs: Add a test.
25
26 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
27
28         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
29         support a given runtime implemented method.
30
31 2010-07-10  Mark Probst  <mark.probst@gmail.com>
32
33         * mini-darwin.c: Register the exception thread with the GC.
34
35 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
36
37         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
38         mono branch.
39
40 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
41
42         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
43         from constant memory.
44
45         * ir-emit.h: Clean up the _FAULT macros a bit.
46
47         * decompose.c: Mark some loads as constant.
48
49         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
50
51 2010-07-09  Miguel de Icaza  <miguel@novell.com>
52
53         * driver.c (mini_usage): Change the name of the --sgen flag to be
54         --gc=sgen and also support --gc=boehm.   These flags can also be
55         set on MONO_ENV_OPTIONS to propagate this to children processes.
56
57         * main.c: Remove the MONO_VM_OPTIONS environment variable that
58         only supported "sgen" and "llvm" config options and instead parse
59         the MONO_ENV_OPTIONS as options that are parsed by the command
60         line parser.   Any command line option that Mono supports can be
61         passed in this environment variable.
62
63 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
64
65         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
66         LLVM.
67
68         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
69         it can now eliminate more than just bounds checks.
70
71         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
72         an extra 'fault' argument.
73
74         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
75         later.
76
77         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
78         decomposition.
79
80         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
81         no longer generated when LLVM is used.
82
83         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
84
85 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
86
87         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
88
89 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
90
91         * driver.c: Moonlight: Force line buffering for stdout.
92
93 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
94
95         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
96         are only callable using invoke.
97
98 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
99
100         * mini-llvm.c (process_bb): Use emit_load () in one more place.
101
102         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
103         MONO_LLVM=xxx is actually usable.
104
105         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
106         since LLVM might be able to hoist them out of loops.
107         (emit_store): Ditto.
108
109 2010-07-08  Neale Ferguson <neale@sinenomine.net>
110
111         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
112         in typeload-unaligned test.
113
114 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
115
116         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
117
118         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
119         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
120         generic trampolines+rgctx fetch trampolines.
121
122 2010-07-08  Geoff Norton  <gnorton@novell.com>
123
124         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
125
126 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
127
128         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
129
130         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
131         is not defined in the LLVM case to keep the imt arg alive.
132
133 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
134
135         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
136         functions, now its 'llvm_<FOO>_trampoline'.
137
138         * method-to-ir.c (emit_imt_argument): Fix llvm support.
139
140         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
141         cannot be passed in the same call.
142
143         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
144         register to be the same as the RGCTX register, the two can't be used together on
145         the same call.
146
147 2010-07-05  Miguel de Icaza  <miguel@novell.com>
148
149         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
150         that allows the user to force the VM to use llvm or sgen.
151
152 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
153
154         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
155         before processing the exception on PPC too.
156
157         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
158
159         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
160         'this' is always passed as the first argument, before the vtype ret arg. This
161         simplifies get_this_arg_reg () and LLVM integration.
162
163 2010-07-05  Martin Baulig  <martin@ximian.com>
164
165         * exceptions-x86.c (mono_arch_handle_exception): Port this to
166         Windows; apply my patch from r159782 in the mono-2-6 branch.
167
168 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
169
170         * Makefile.am: Don't build the debug assembler files if we're building without
171         debugger support.
172
173 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
174
175         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
176
177 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
178
179         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
180         length.
181
182         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
183         regs [ARMREG_FP] instead.
184
185         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
186
187         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
188         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
189
190         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
191
192         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
193
194         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
195
196         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
197         without IMT_REG defined (ARM).
198
199         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
200         the trampolines.
201
202 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
203
204         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
205
206 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
207
208         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
209         definitions to match their declarations and vice-versa.
210
211 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
212
213         * Makefile.am (common_sources): Add mini-llvm.h.
214
215         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
216
217 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
218
219         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
220         compiling.
221
222 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
223
224         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
225         implemt the option of loading the llvm backend from a module so
226         that we can have a single binary and the bloat from llvm is
227         only experienced when it is actually loaded.
228
229 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
230
231         * mini-llvm.c: remove direct access to mono_defaults.
232
233 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
234
235         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
236         a no-op.
237
238         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
239
240         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
241         is now mono_arch_nullify_class_init_trampoline ().
242         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
243         opcodes, they are no longer needed.
244
245         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
246         now mono_arch_nullify_class_init_trampoline ().
247         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
248         opcodes, they are no longer needed.
249
250         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
251         vtable on platforms which support it.
252
253         * driver.c: Print the full LLVM version we are compiled against in --version.
254
255         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
256         a bit better. Decode nesting information to fix eh support for llvm+aot.
257
258         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
259         methods.
260
261         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
262
263         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
264         is always passed as the first argument, before the vtype ret arg. This simplifies
265         get_this_arg_reg () and LLVM integration.
266
267 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
268
269         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
270         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
271         most of the vcall specific code to mono_vcall_trampoline () from
272         common_call_trampoline ().
273
274 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
275
276         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
277         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
278         if the callsite is patched.
279
280         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
281         the llvm branch.
282
283         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
284         the trampoline in the xdebug info.
285
286         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
287         as well.
288
289 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
290
291         * mini-llvm.c: Fix a few problems exposed by make check.
292
293 2010-06-25  Mark Probst  <mark.probst@gmail.com>
294
295         * mini-trampolines.c (common_call_trampoline): An ugly hack to
296         work around a potentially very hard to fix problem with inflating
297         generic methods.
298
299 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
300
301         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
302         problem has been fixes.
303
304 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
305
306         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
307
308         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
309         It might be be better to define a MonoGCJitOptions structure later and have the
310         GC return that.
311
312         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
313
314         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
315
316         * debugger-agent.c (get_objref): Implement support for sgen.
317
318         * driver.c: Remove the unused gc_wrapper.h include.
319
320         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
321         implementation.
322
323 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
324
325         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
326
327         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
328         in MonoCompile.
329
330         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
331         instead.
332
333 2010-06-23  Miguel de Icaza  <miguel@novell.com>
334
335         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
336         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
337
338         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
339         it only for Boehm diagnostics.
340
341         * Makefile.am: Make the file a bit more consistent.
342
343         * debug-debugger.c: Wrap the entire file with an #ifdef
344         MONO_DEBUGGER_SUPPORTED to simplify the build.
345
346         * Makefile.am: Fix the opcodes build issue by including the
347         source, not by including the .lo file directly
348
349         Always bring the MDB sources into the build, to drop the
350         dependency on the AM_CONDITIONAL from configure.in as the hard
351         debugger supports Boehm, but not Sgen, this simplifies the build. 
352
353         * Renamed the *.s files into *.S
354
355 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
356
357         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
358         wb for now on 64bits systems while issues with valuetype returns
359         are not fixed.
360
361 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
362
363         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
364         passes by calling createStandardFunctionPasses ().
365
366 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
367
368         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
369
370 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
371
372         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
373         MONO_INST_FAULT.
374
375         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
376         allow better optimization if the OP_LDADDR which caused the flag to be set was
377         optimized away.
378
379         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
380
381         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
382         the type token.
383
384         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
385
386         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
387
388 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
389
390         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
391         to handle the code sequence generated for non-near calls. Fixes #616056.
392
393 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
394
395         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
396
397         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
398
399         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
400         nesting clause too.
401         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
402         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
403         trampoline which saves the context, so changes made to callee saved registers in
404         finally clauses are visible to a nesting catch clause.
405
406         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
407
408         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
409         in LLVM compiled code.
410         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
411         the finally handler has ran.
412
413         * mini.h (ResumeState): New structure containing information required to resume
414         exception handling after executing LLVM compiled finally clauses.
415
416         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
417         bit, by passing all the registers as one argument.
418
419 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
420
421         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
422         to avoid an assert.
423
424 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
425
426         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
427
428         * aot-compiler.c aot-runtime.c: Fix LLVM support.
429
430         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
431         pad, branch to a new bblock instead.
432
433         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
434         orig_method.
435
436         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
437
438         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
439
440 2010-06-17  Geoff Norton  <gnorton@novell.com>
441
442         * mini-arm.h:
443         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
444         can be used by sgen.
445
446 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
447
448         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
449
450         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
451         fails.
452
453         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
454         the ip done by throw_exception (), it is not needed for corlib exceptions.
455
456 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
457
458         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
459         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
460         of size > 5 words. This support fast barriers for value types up to
461         256/512 bytes which     beyond that the copying itself is the major issue.
462
463         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
464         for gsharing, so use it.
465
466         This eliminate all calls to mono_value_copy from managed code in
467         gmcs, fsharp and ipy.
468
469         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
470
471         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
472         performance kept
473
474         * mini.c (mini_init): Register new icall.
475
476 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
477
478         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
479         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
480
481 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
482
483         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
484         value types as the overhead is huge. Manually expand it up to 5 words to
485         avoid code bloat.
486
487         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
488         is an exception that performance is dominated by mono_value_copy.
489
490         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
491
492 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
493
494         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
495         trampolines on x86, since those have their own cconv.
496
497         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
498         exception trampolines.
499
500         * tramp-x86.c: Add xdebug info for a few trampolines.
501
502         * mini-llvm.c: Set the name of the arguments.
503
504         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
505         using a block address if using the LLVM mono branch.
506
507         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
508         trampolines.
509
510 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
511
512         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
513
514         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
515
516         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
517
518         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
519
520         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
521         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
522         to identify the vtable slot address plus the method which needs to be compiled.
523
524         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
525         using llvm.
526
527         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
528         'this' is always passed as the first argument, before the vtype ret arg. This
529         simplifies get_this_arg_reg () and LLVM integration.
530
531         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
532         the latest changes.
533
534         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
535         these trampolines.
536
537         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
538
539         * mini-llvm.c: Fix compilation with llvm 2.6.
540
541         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
542
543         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
544         defined.
545
546         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
547         is always passed as the first argument, before the vtype ret arg. This simplifies
548         get_this_arg_reg () and LLVM integration.
549
550 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
553
554         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
555         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
556         translate into much nicer code.
557
558 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
559
560         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
561         parameter index information. Use this to simplify a lot of code.
562
563         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
564
565 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
566
567         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
568         to fix infinite generic recursion. Fixes #612702.
569
570 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
571
572         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
573         imt trampoline per imt slot when using LLVM.
574
575 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
576
577         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
578
579 2010-06-09  Levi Bard  <levi@unity3d.com>
580
581         * debugger-agent.c: Clear unloaded types on appdomain unload.
582
583 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
584
585         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
586         Fixes #612206.
587
588         * exceptions.cs: Add a test.
589
590 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
593
594         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
595
596         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
597         so it doesn't have to do it.
598
599         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
600         process does not mix with ours.
601
602         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
603         ones.
604
605         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
606         loads/stores which can throw exceptions inside clauses.
607
608 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
609
610         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
611         one ENDFINALLY.
612
613         * mini.c (mini_init): Register mono_resume_unwind as an icall.
614
615 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
616
617         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
618
619         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
620         locals.
621
622 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
623
624         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
625         appdomain.
626
627 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
628
629         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
630         Use a separate generic class init trampoline for llvm, since it needs a different
631         signature.
632
633         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
634         includes the location of this/rgctx.
635
636         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
637         branch.
638
639 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
640
641         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
642
643         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
644         clause.
645
646 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
647
648         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
649         says so.
650
651         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
652
653         * aot-compiler.c (patch_to_string): New debugging helper function.
654
655 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
656
657         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
658         trampoline.
659
660         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
661
662         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
663
664         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
665
666         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
667         clauses.
668
669         * mini.c (create_jit_info): Print EH clause info for LLVM too.
670
671 2010-05-28  Mark Probst  <mark.probst@gmail.com>
672
673         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
674         cpobj with reference types.
675
676 2010-05-28  Mark Probst  <mark.probst@gmail.com>
677
678         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
679         write barrier for reference types.
680
681 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
682
683         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
684         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
685
686 2010-05-31  Martin Baulig  <martin@ximian.com>
687
688         Fix #608271.
689
690         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
691         clear_breakpoint() on all breakpoint events and remove them from the list.
692
693 2010-05-27  Martin Baulig  <martin@ximian.com>
694
695         Fix #605698.
696
697         * debugger-agent.c (method_commands, type_commands): Temporarily
698         set the appdomain while executing this method; do all metadata
699         calls in the debuggee's appdomain where user assemblies are loaded.
700
701 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
704
705 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
706
707         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
708
709 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
710
711         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
712         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
713         be referenced even after the header is freed.
714
715         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
716         section.
717
718 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
719
720 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
721
722         * genmdesc.c (main): Fixing the detection of the nacl switch.
723
724         Code is contributed under MIT/X11 license.
725
726 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
727
728         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
729
730         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
731
732         * mini.h (LLVM_CHECK_VERSION): New helper macro.
733
734 2010-05-25  Miguel de Icaza  <miguel@novell.com>
735
736         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
737         the Perl program
738
739         * genmdesc.c: Added support for nacl: key on the machine
740         description files to support the extra space required by Google
741         Native Client.
742
743 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
744
745         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
746
747 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
748
749         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
750         mono_runtime_class_init_full ().
751         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
752
753 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
754
755         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
756
757 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
758
759         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
760         two are not the same on ilp32.
761
762 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
763
764         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
765         added by mistake.
766
767         * mini-ppc.c: Fix the DISABLE_JIT build.
768
769 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
770
771         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
772         (make_writable): Remove this unused function.
773
774 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
775
776         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
777         structure. Make the labels to plt entries local symbols instead of assembler local
778         labels, since tha latter causes problems for the iphone linker.
779
780 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
781
782         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
783
784 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
787         (ppc_patch_full): Ditto.
788
789         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
790
791         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
792         if gshared is enabled, to avoid asserts in the trampoline code.
793
794         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
795         on ia64.
796
797 2010-05-15  Geoff Norton  <gnorton@novell.com>
798
799         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
800         xdebug mode.
801
802 2010-05-14  Geoff Norton  <gnorton@novell.com>
803
804         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
805         misaligned stack on darwin.
806
807 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
808
809         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
810         arm.
811
812 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
813
814         * xdebug.c: Fix ARM support.
815
816 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
817
818         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
819         and do most of the work on the normal stack.
820         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
821
822 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
823
824         * aot-compiler.c: Put non-code data into the .rodata section on linux.
825
826 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
827
828         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
829
830 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
831
832         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
833         and do most of the work on the normal stack.
834
835 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
836
837         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
838         and do most of the work on the normal stack even if sigaltstack is disabled.
839
840 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
841
842         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
843         UCONTEXT_REG_ constants are available on linux as well.
844         (mono_arch_monoctx_to_sigctx): Ditto.
845         (mono_arch_ip_from_context): Ditto.
846
847 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
848
849         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
850         other domains.
851
852 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
853
854         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
855         no longer needed.
856
857 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
858
859         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
860         if a breakpoint cannot be inserted.
861
862 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
863
864         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
865
866 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
867
868         * debugger-agent.c (frame_commands): Return an error instead of asserting if
869         no JIT info is found for the method.
870
871 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
872
873         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
874         in debug printf.
875
876 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
877
878         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
879         a list of arch specific trampolines.
880
881         * aot-compiler.c (emit_trampolines): Use it.
882
883 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
884
885         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
886         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
887         get rid of the _full from their name.
888
889 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
890
891         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
892         get_nullified_class_init_trampoline to remove some code duplication.
893
894 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
895
896         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
897         attach.
898
899 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
902
903         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
904
905         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
906         there is no need to jump through the first plt entry.
907
908         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
909
910         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
911         arch-specific function.
912         (mono_aot_get_plt_info_offset): Ditto.
913
914         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
915         mono_arch_init () to register jit icalls called from full-aot trampolines.
916         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
917         to mini-<ARCH>.c.
918
919         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
920         the specialized throw corlib exception trampoline, use a variant of the normal
921         trampoline along with a new C function which does the call to
922         mono_exception_from_token (), just like on x86.
923
924 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
925
926         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
927         Reorganize the full aot trampoline creation functions, instead of taking a bunch
928         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
929         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
930         creation functions on architectures which have the full-aot ones.
931
932 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
935
936 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
937
938         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
939         explicitly, this seems to be required by some gcc versions at -O2.
940
941         * mini-arm.c: Ditto.
942
943 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
944
945         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
946         has_target delegate invokes.
947
948 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
949
950         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
951         info fields.
952
953         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
954         add patches/unwind info arguments, move to mini.c.
955
956         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
957
958 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
959
960         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
961         command which returns full path names.
962
963 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
964
965         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
966         code_size output variable.
967
968         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
969         mono_get_lmf_addr.
970         
971 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
972
973         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
974         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
975         (mono_arch_cpu_enumerate_simd_versions): Ditto.
976
977 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
978
979         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
980         apple assembler.
981
982 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
983
984         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
985
986 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
987
988         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
989
990 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
991
992         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
993
994 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
995
996         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
997         line number support works with eglib.
998
999 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1000
1001         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1002         dirty an extra 70kb pages on startup we are now going to choose a
1003         different strategy: ship mono and mono-llvm binaries, with the
1004         second being the one that links with LLVM and defaults to LLVM
1005         being enabled.
1006
1007 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1010         Implement full-aot support on x86.
1011
1012         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1013         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1014         the first register returned by get_global_int_regs ().
1015
1016         * cpu-x86.md: Fix the length of insertx_u1_slow.
1017
1018         * iltests.il.in: Disable tail call tests when running with full-aot.
1019
1020 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1023
1024 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1025
1026         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1027         in the initializer, because it's non-constant.
1028
1029 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1030
1031         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1032         of LLVM on by default.   Used for buildbots and other setups.
1033
1034 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1037
1038 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1039
1040         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1041         initonly static fields when using moving GC.
1042
1043         Contributed under MIT/X11 license.
1044
1045 2010-04-23  Geoff Norton  <gnorton@novell.com>
1046
1047         * mini-amd64.h: Darwin x86_64 support.
1048
1049 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1050
1051         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1052
1053 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1054
1055         * exceptions-arm.c: Add Android support for sigcontext structure.
1056
1057 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1058
1059         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1060         wrappers correctly now that their wrapper info is NULL.
1061
1062 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * mini.c (mono_jit_compile_method_inner): Avoid calling
1065         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1066
1067 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1068
1069         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1070         so the latter can be #ifndef DISABLE_JIT-ed.
1071
1072         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1073
1074 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1077
1078 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1081         stack.
1082
1083 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1086         calling mono_class_num_methods (). Fixes #592244.
1087
1088 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1089
1090         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1091
1092         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1093
1094 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1097         version.
1098         * (handle_alloc): Ditto.
1099         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1100         change, its not needed anymore.
1101
1102 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1103
1104         * mini-posix.c (sigusr1_signal_handler): Fix build on
1105         non x86/amd64 systems.
1106
1107 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1110         calls where the constrained class needs a context. Fixes #595863.
1111
1112         * iltests.il.in: Add a test.
1113
1114 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1117         2.6/SVN seems to have broken support for them.
1118
1119 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * mini-llvm.c: Fix support for LLVM 2.6.
1122
1123 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1126         MonoInternalThread belonging to the thread.
1127
1128 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1129
1130         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1131         unsafe optimization that will remove bound checks.
1132
1133 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1134
1135         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1136         CompareExchange not to be inlined for I8.
1137
1138         Contributed under MIT/X11 license.
1139
1140 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1141
1142         * array.cs: Add tests for cast between primitive array types.
1143
1144 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1145
1146         * Makefile.am: create a convenience library for moon to link with
1147
1148 2010-04-07 Paolo Molaro <lupus@ximian.com>
1149
1150         * method-to-ir.c: optimize array accesses from generic interfaces.
1151
1152 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1155
1156 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1157
1158         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1159         of marshalbyref classes.
1160
1161         Fixes #515884.
1162
1163 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1164
1165         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1166         information.
1167
1168         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1169         information.
1170
1171         * mini.h: Increase AOT version.
1172
1173 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1174
1175         * mini-x86.h: Only enable soft debugger when using sigaction or on
1176         Windows. Fixes build on Haiku (lacks siginfo_t).
1177
1178         Code is contributed under MIT/X11 license.
1179
1180 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1181
1182         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1183         BeOS-style signal handlers.
1184
1185         Code is contributed under MIT/X11 license.
1186         
1187 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1190
1191 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * mini-exceptions.c: Fix win32 build.
1194
1195 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1196
1197         * mini.c, driver.c: Call mono_gc_base_init() before
1198         mono_debug_init().
1199
1200 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1201
1202         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1203         call_method]): Delegate the actual work in security-core-clr.c
1204         to ease code sharing.
1205
1206 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1209         float conv.ovf.un opcodes are encountered, instead of asserting later.
1210         Fixes #566296.
1211
1212 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1213
1214         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1215
1216         * iltests.il.in: Add a test.
1217
1218 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1219
1220         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1221         large. Fixes #567040.
1222
1223         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1224
1225 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1226
1227         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1228         #592711.
1229
1230 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1231
1232         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1233         mono_create_handler_block_trampoline with the proper #ifdef so that it
1234         compiles on amd64.
1235
1236 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1239         allows to select if it's new or old context that is passed to 
1240         the callback.
1241
1242         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1243         case when executing a guarded handler from the EH machinery.
1244
1245         * mini-exceptions.c (mono_install_handler_block_guard): New function
1246         responsible for checking for handler blocks, installing the guard and
1247         clearing abort state.
1248
1249         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1250         to check for handler blocks and skip interruption logic if one was found.
1251
1252         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1253         by the handler block guard trampoline. Resumes interruption by raising the
1254         pending ThreadAbortException.
1255
1256         * mini.c (create_jit_info): Calculate the end address of a finally block.
1257
1258         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1259         of a finally block to a specified address and return the old one.
1260
1261         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1262         trampoline patches the original return address and calls the trampoline function.
1263
1264 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1267
1268         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1269         does the patching if the callee is in the same domain.
1270
1271         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1272         of mono_arch_patch_plt_entry ().
1273
1274 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1275
1276         * mini.c (create_jit_info): Fix try block hole length encoding.
1277
1278 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1279
1280         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1281         duplicate information and print offsets instead of absolute addresses.
1282
1283 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1286         event is sent. Fixes #591733.
1287
1288 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1291         OpenBSD.
1292
1293 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1296         thread_to_tls hash table.
1297
1298         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1299         section. Fixes #591000.
1300
1301 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1302
1303         * Makefile.am (version.h): Check for pure .git directory only,
1304         fixes SVN revision when using git without git-svn.
1305
1306         Contributed under MIT/X11 license.
1307
1308 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1311
1312 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * basic-simd.cs: Test for vector x scalar binary operators.
1315
1316 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1319         intrinsics with expanded scalar arguments.
1320
1321 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1322
1323         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1324         don't have an exception class, so don't decode it. This would crash
1325         with filter clauses.
1326
1327 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1328
1329         Make sure that trunk builds with DISABLE_JIT, an update to the
1330         PlayStation 3 port.
1331         
1332         * mini.c (mini_get_shared_method): this code seems to be necessary
1333         regardless of whether DISABLE_JIT has been defined.
1334
1335         (mono_jit_compile_method_inner): it seems that this method is
1336         required even in full AOT mode, so ifdef out only the pieces that
1337         try to genrate code (the body of code that applies patches to the
1338         code).  
1339
1340         (mini_method_compile): do not compile when using DISABLE_JIT.
1341
1342         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1343         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1344         compile when DISABLE_JIT is set.
1345
1346 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1347
1348         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1349         arch really supports it.
1350
1351 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1352
1353         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1354
1355 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1356
1357         * exceptions-s390x.c: Add support for
1358         mono_arch_get_throw_corlib_exception and fix throw by name.
1359
1360         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1361         logic (especially for varargs); Correct localloc sizing; Add
1362         mono_arch_get_this_arg_from_call and
1363         mono_arch_get_this_arg_from_call.
1364
1365         * mini-s390x.h: Add support for facility list extraction;
1366         Correct/update MONO_ARCH_xxx settings.
1367
1368         * mini-s390.c: Minor corrections to instruction output for
1369         varargs. No IMT implementation - I think it's time to deprecate
1370         s390 and just leave s390x.
1371
1372         * tramp-s390x.c: Correct creation of trampoline instruction
1373
1374
1375         * cpu-s390x.md: Update some instruction lengths
1376
1377 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1380         can be hit with partial sharing.
1381
1382         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1383         in non-shared classes correctly.
1384         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1385         Turn on partial sharing.
1386
1387 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1390         by mistake.
1391
1392 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1395         mono_method_signature ().
1396
1397         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1398
1399         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1400         error checking, so later calls do not need error checking.
1401
1402 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1405
1406         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1407
1408 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1409
1410         * mini-exceptions.c (mono_handle_exception_internal): Don't
1411         check try_end for archs different than s390. 
1412
1413         * mini.c (create_jit_info): Don't crash if the finallt block is the
1414         last one.
1415
1416 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1417
1418         * driver.c (mono_main): Don't free global codeman under linux since
1419         glic now peeks at code on stack for more archs than just amd64.
1420
1421 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1422
1423         * mini.c, method-to-ir.c: changes to support compressed interface
1424         bitmaps.
1425
1426 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1429         Use sigaction on OpenBSD too.
1430
1431 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1432
1433         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1434
1435 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1436
1437         * debugger-agent.c: #include sys/select.h for fd_set.
1438
1439         Code is contributed under MIT/X11 license.
1440
1441 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1444         (openbsd+amd64 ?).
1445
1446 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1449         some large methods with lots of exception handlers. Fixes #440924.
1450
1451 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1452
1453         * method-to-ir.c: remove code duplication for interface checks.
1454
1455 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1458         (assembly_unload): Clear all event requests referencing the to-be unloaded
1459         assembly.
1460
1461
1462 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1463
1464         * mini.h, mini-exceptions.c: restore the state of the stack
1465         guard page permissions.
1466
1467 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1470         call site patching code, it doesn't appear to be needed.
1471
1472 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1475         sharing generic methods whose type arguments are a mix of reference and
1476         non-reference types. Not yet turned on.
1477
1478         * mini.c (mini_get_shared_method): New helper function to return
1479         the method which will be compiled/registered in the JIT tables when doing
1480         generic sharing.
1481         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1482         use mini_get_shared_method ().
1483
1484         * mini.c (mini_method_compile): Register the same method which is compiled when
1485         doing generic sharing.
1486
1487         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1488
1489         * generics.cs: Add partial sharing tests.
1490
1491 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1492
1493         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1494                    Add an enum value that or's all possable values together. Add an enum value
1495                    that marks the end of the used bit indexes.
1496
1497         * mini-amd64.c : Make changes to match the changes in mini.h 
1498
1499         * mini-x86.c : Make changes to match the changes in mini.h
1500
1501         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1502                    simd_version to support more simd versions. Changed the name of
1503                    simd_version to simd_version_flags to make it more intuitive that
1504                    it now contains bit flags. Reordered the *_intrinsics arrays to
1505                    match the changes above. Changed emit_intrinsics() to use the new
1506                    setup mentioned above.
1507
1508         Code is contributed under MIT/X11 license.
1509
1510 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1511
1512         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1513         remaining archs. Alpha and hppa maintainers, please stand up.
1514
1515 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1516
1517         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1518         is needed even when fail_tramp!=NULL.
1519
1520 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * debugger-agent.c (insert_breakpoint): Write a log message.
1523
1524 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1525
1526         * iltests.il.in: Add a few tests for LEAVE going over multiple
1527         finally clauses.
1528
1529 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1532
1533 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * mini.h (MonoBasicBlock): Add native_length field.
1536         * mini.h (MonoCompile): Add try_block_holes field.
1537         * mini.h (MonoInst): Add exception_clause pointer to
1538         the data union.
1539
1540         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1541         * mini.c (mono_cfg_add_try_hole): New function to register possible
1542         holes in try blocks.
1543         * mini.c (create_jit_info): Fill in the holes information.
1544
1545         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1546         by a try block.
1547
1548         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1549
1550 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1551
1552         * jit-icalls.c: adjusted for the array API changes.
1553
1554 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1557
1558 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1561         the 'pending' flag. This fixes support for appdomains too.
1562
1563
1564 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1565
1566         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1567
1568 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1571         when using LLVM, LLVM generates it itself when needed.
1572
1573         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1574
1575         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1576         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1577         OP_ANDNPS/OP_ANDNPD.
1578
1579 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1582         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1583         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1584
1585 2010-03-11  Martin Baulig  <martin@ximian.com>
1586
1587         * debugger-agent.c (type_commands): Add NULL check to
1588         `CMD_TYPE_GET_SOURCE_FILES'.
1589
1590 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1591
1592         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1593
1594 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1597         #586664.
1598
1599         * iltests.il.in: Add a test.
1600
1601 2010-03-05  Martin Baulig  <martin@ximian.com>
1602
1603         Add support for aborting invocations.
1604
1605         * debugger-agent.c
1606         (InvokeData): Added `InvokeData *last_invoke'.
1607         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1608         added a new `invoke' field to keep the `InvokeData *' throughout
1609         the invocation.
1610         (ErrorCode): Added `ERR_NO_INVOCATION'.
1611         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1612         (mono_debugger_agent_handle_exception): Don't report any exception
1613         if an abort was requested.
1614         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1615         a thread abort if necessary.
1616         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1617
1618 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1619
1620         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1621         so we can release the whole list and not just the first one. Free
1622         it in more places as well.
1623
1624 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1627
1628 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1629
1630         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1631
1632 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1633
1634         * driver.c: report also other misc build options.
1635
1636 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1637
1638         * method-to-ir.c: Generate better code for the NewObject
1639         intrinsic.
1640         
1641 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1644         is disabled. Fixes #582322.
1645
1646         * iltests.il.in: Add a test.
1647
1648 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1651         the handling of obj->synchronization == null and owner != current thread to
1652         mono_monitor_exit ().
1653
1654         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1655
1656
1657 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1658
1659         * mini.c: change the way emulated opcode info is stored and save about
1660         4 KB of runtime memory.
1661
1662 2010-03-04  David S. Miller  <davem@davemloft.net>
1663
1664        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1665        that don't provide the siginfo in the second signal handler argument
1666        are buggy, and this has been fixed for years.
1667        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1668        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1669
1670 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1671
1672         * aot-runtime.c (find_symbol): Fix a leak.
1673         (decode_patch): Ditto.
1674
1675 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1678
1679 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1680
1681         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1682
1683 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1684
1685         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1686
1687 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1688
1689         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1690         to check for errors, it's enough to create the metadata open.
1691
1692         Fixes #562150
1693
1694 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1695
1696         * trace.c|h:
1697         * mini-exceptions.c: Add support for printing stack traces when handling
1698         exceptions, and when printing exceptions thrown while tracing also print
1699         the exception message.
1700
1701 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1702
1703         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1704         since the exclude token is a valid string character.
1705
1706 2010-03-02  Levi Bard  <levi@unity3d.com>
1707
1708         * debugger-agent.c: Invalidate thread stacks on domain unload.
1709
1710 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1711
1712         * method-to-ir.c: Emit dummy_use for stored reference after write
1713         barriers to make sure the object is pinned if the GC interrupts
1714         before the write barrier is done.
1715
1716 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1719
1720 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * debugger-agent.c: Add a log message printing the protocol version.
1723
1724 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * debugger-agent.c: Add a new command to communicate the protocol version used
1727         by the client. This could be used to allow newer runtimes to communicate with
1728         older clients.
1729
1730 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1733
1734 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1737         type.
1738
1739 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1740
1741         * mini-arm.c: make the arm cpu arch configurable with the
1742         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1743         Bug #584198.
1744
1745 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1746
1747         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1748         support for the perf tool on Linux.
1749
1750 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1751
1752         * method-to-ir.c: make string.InsertenalSetChar() specialization
1753         effective.
1754
1755 2010-03-01  Robert Jordan  <robertj@gmx.net>
1756
1757         * Makefile.am: fix the non-static build.
1758
1759 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1762         here.
1763
1764 2010-02-26  Robert Jordan  <robertj@gmx.net>
1765
1766         * tasklets.c (continuation_store): Return from an error condition
1767         immediately.
1768
1769 2010-02-26  Martin Baulig  <martin@ximian.com>
1770
1771         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1772
1773         * debug-mini.c
1774         (MonoDebuggerThreadInfo): Added `internal_flags'.
1775         (MonoDebuggerInternalThreadFlags): New enum.
1776         (_mono_debugger_throw_exception): Don't signal the debugger if a
1777         type abort was requested.
1778         (_mono_debugger_unhandled_exception): Likewise.
1779         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1780         (mono_debugger_runtime_invoke): If the debugger requested a thread
1781         abort during the invocation, reset it here.
1782
1783 2010-02-26  Martin Baulig  <martin@ximian.com>
1784
1785         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1786         instead of `MonoThread *'.
1787
1788 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1791         code offsets table, as it is mostly sorted.
1792
1793 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1796         Fixes #582991.
1797
1798 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1801
1802 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1803
1804         * Makefile.am: build the new ABI version of the libmono library.
1805         * debugger-agent.c, mini.c: fix warnings with the new API.
1806         * jit.h: don't depend on glib.h being included.
1807
1808 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1811
1812 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1815         ThreadStatic variables.
1816
1817 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1820         data is not freed yet. Fixes #582460.
1821
1822 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1825         event requests. Bump protocol minor version.
1826
1827 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1828
1829         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1830
1831 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1832
1833         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1834         #581950.
1835
1836         * iltests.il.in: Add a test.
1837
1838 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1839
1840         * mini.c (inline_method): Check for loader errors.
1841
1842 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1843
1844         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1845         instead of mono_method_get_header as it doesn't decode locals
1846         so the called method can have unresolved dependencies that will only
1847         be satisfied after the current method is JIT'd.
1848
1849         Fixes #550968.
1850
1851 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * basic.cs (test_0_div_opt): Speed this up a bit.
1854
1855 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1858
1859         * mini.c (mono_jit_create_remoting_trampoline): Call
1860         mono_create_specific_trampoline () instead of
1861         mono_arch_create_specific_trampoline ().
1862
1863         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1864
1865 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1866
1867         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1868         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1869
1870         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1871
1872         * mini-amd64.c: Fix DISABLE_JIT support.
1873
1874 2010-02-20  Geoff Norton  <gnorton@novell.com>
1875
1876         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1877
1878 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1881         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1882         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1883         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1884         handle_exception.
1885
1886 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1889         edx/ecx too. This is needed to support OP_SEQ_POINT.
1890
1891 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1894
1895         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1896
1897 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1900         LLVM+AOT+exceptions, not enabled yet.
1901
1902 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1905
1906 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1909         xdebug info for these.
1910
1911         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1912         in a few places.
1913
1914         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1915         not used yet.
1916
1917 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1920
1921 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1924         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1925
1926         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1927         for mtouch.
1928
1929 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1930
1931         * debugger-agent.c: handle incomplete reads and EINTR in
1932         recv()/send(). This could have been causing random
1933         disconnections.
1934
1935 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1936
1937         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1938         points.
1939
1940         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1941         so they have small offsets. Fixes #566311.
1942
1943 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1944
1945         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1946
1947 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * mini-amd64.c: Remove the special casing of byref in a few places now that
1950         mini_type_get_underlying_type () handles it.
1951
1952         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1953         by returning native int. Fixes #577984.
1954
1955 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1958         a macro.
1959
1960         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1961         of putting the clause itself.
1962
1963         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1964
1965 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1966
1967         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1968         might be unaligned.
1969
1970 2010-02-10  Geoff Norton  <gnorton@novell.com>
1971
1972         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1973
1974 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1977         llvm methods too.
1978
1979         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1980         it is not an LLVM generated symbol.
1981
1982         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1983
1984         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1985         implementation in gshared mode because it causes regressions.
1986
1987         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1988
1989         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1990         should be done by the caller.
1991
1992         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1993
1994         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1995
1996         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1997         since mono_jit_info_table_find () doesn't do it anymore.
1998
1999         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2000         instead of mono_jit_info_table_find ().
2001
2002 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2005
2006         * aot-compiler.c (encode_method_ref): Update after the removal of
2007         mono_gc_get_managed_allocator_type ().
2008
2009         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2010         Fixes #564538.
2011
2012 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2015         generic params as well.
2016         (handle_isinst): Ditto.
2017
2018         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2019         instead of always calling an icall.
2020
2021         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2022         computing the size of the got.
2023
2024         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2025         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2026         the assembly directive '.set' so it points to the first LLVM emitted method.
2027
2028 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2029
2030         * mini.c (mini_method_verify): Report the method which failed to verify.
2031
2032 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2033
2034         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2035         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2036         runtime MS verifier.
2037
2038 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2041         #561962.
2042
2043 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * mini-llvm.c: Init the jit module only when first JITting.
2046
2047         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2048
2049         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2050
2051         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2052         replaced with the real got.
2053
2054         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2055
2056         * image-writer.c: Reduce the amount of #ifdefs a bit.
2057
2058         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2059         llvm on darwin/arm.
2060
2061         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2062
2063         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2064         global.
2065
2066 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2069         (mono_llvm_emit_method): Fix unaligned stores too.
2070
2071         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2072         so async stack walks don't crash.
2073
2074 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2077         was not patched if the callee needed an rgctx trampoline.
2078
2079 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2082         vtable address in AOT code.
2083
2084 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2085
2086         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2087         MonoInst's.
2088
2089 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2090
2091         * genmdesc.pl: remove dependency on external cpp.
2092
2093 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2096         using LLVM, its not needed, and abcrem can't handle it.
2097
2098 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2099
2100         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2101         it easier to group instructions and reduce duplication.
2102
2103 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * decompose.c: Move the array/soft float decompose routines here from
2106         method-to-ir.c.
2107
2108         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2109
2110 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2113         to tell LLVM that the got is constant, not used yet.
2114
2115         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2116
2117 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2118
2119         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2120         managed wrappers.
2121
2122 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * aot-compiler.c (add_wrappers): Commit the hack which generates
2125         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2126         custom attribute.
2127
2128 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2131         a fault, only used by the LLVM backend.
2132
2133         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2134         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2135
2136         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2137         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2138
2139         * mini-llvm.c: Only generate volatile loads from load instructions which have
2140         the MONO_INST_FAULT flag set.
2141
2142 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2145         64 bit platforms.
2146
2147 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2150         sequence points. Fixes #571236.
2151
2152 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2153
2154         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2155         end of the appdomain unload process, after assemblies have been unloaded.
2156         Fixes #574842.
2157
2158 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2161         works.
2162
2163         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2164         Fixes #573988.
2165
2166 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2167
2168         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2169
2170 2010-01-26  Geoff Norton  <gnorton@novell.com>
2171
2172         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2173         with struct marshalability.
2174
2175 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2178         it supports class names as well.
2179
2180         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2181         needed by the GC map code.
2182
2183         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2184         flags if needed.
2185
2186         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2187         if cfg->init_ref_vars is set.
2188
2189         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2190         cfg->disable_initlocals_op_refs is set.
2191
2192         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2193         using liveness info if cfg->compute_precise_live_ranges is set.
2194
2195         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2196         volatile variables correctly. Add comments about the live ranges. Not enabled
2197         yet.
2198
2199 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2202         0x2a into them in method prologs.
2203
2204         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2205
2206 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2209         classes, since llvm is compiled with -fno-rtti.
2210
2211         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2212
2213         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2214         llvm does not require it.
2215
2216         * aot-runtime.c (load_method): Print the full name of the last aot method.
2217
2218 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2221         thread has not fully started yet.
2222
2223 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2226
2227 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2228
2229         * driver.c: Do not abort if LLVM is not supported, print a
2230         warning and add the information to the Mono JIT information.
2231
2232 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2235         using explicit null checks.
2236
2237 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2240         related code.
2241
2242         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2243         () in one place.
2244         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2245         its no longer needed.
2246
2247         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2248
2249         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2250         define for platforms still using it (s390). Get rid of the
2251         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2252
2253         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2254         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2255
2256         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2257         the caller pushed the arguments.
2258
2259         * mini-llvm.c: Enable throwing exceptions on x86.
2260
2261         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2262         "Thread (nil) may have been prematurely finalized" messages if this is called
2263         on a thread not registered with the runtime.
2264
2265         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2266
2267 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * jit-icalls.c (mono_array_new_3): New jit icall.
2270
2271         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2272
2273         * arrays.cs: Add a test for 3 dimensional arrays.
2274
2275 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2278         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2279         used.
2280
2281         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2282         thrown on x86.
2283
2284         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2285
2286         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2287
2288         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2289
2290 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2291
2292         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2293           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2294
2295         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2296
2297         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2298
2299         Code is contributed under MIT/X11 license.
2300
2301 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2304
2305         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2306
2307         * mini.c (mini_method_compile): Set the new flag when running under the
2308         debugger.
2309
2310 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2311
2312         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2313         a ref/noref value + a global pin flag, so parts of stack frames can still be
2314         precisely marked even if they include stuff which needs pinning. Improve logging.
2315         Fix many bugs. Not enabled yet.
2316
2317         * gc-test.cs: Add a few tests.
2318
2319         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2320         the normal -v options. Avoid propagating liveness information through bblocks
2321         which end with a NOT_REACHED opcode.
2322
2323         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2324         after cfg has been freed.
2325
2326 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2329         if a clause is skipped because it uses the exception object, since it could
2330         have caught the exception.
2331
2332         * exceptions.cs: Add a test.
2333
2334 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2335
2336        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2337
2338         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2339         ICollection<T> wrappers.
2340
2341 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2344
2345 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2348         NOMAP32BIT or optimize_for_xen is set.
2349
2350 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2353         mono_metadata_str_hash () instead.
2354
2355 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2358         sizeof (void*).
2359
2360         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2361
2362 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2365         flag is set.
2366
2367         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2368         throwing code correctly.
2369
2370         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2371
2372 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2375         ftnptrs created by us, handle RGCTX_FETCH correctly.
2376         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2377
2378         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2379         ftnptr added by mono_aot_get_named_code ().
2380
2381 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * mini-arm.c: Fix a few LLVM problems.
2384
2385         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2386
2387 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2388
2389         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2390         AOT compiling.
2391
2392 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2393
2394         * jit.h, method-to-ir.c: added ability to set the policy for
2395         inserting breakpoints from the break IL instruction or the
2396         Debugger.Break () API call.
2397
2398 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2401         assemblies need to be eagerly loaded.
2402
2403 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2406
2407 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2410         an argument which matches any exception.
2411
2412 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2415         optimization if the called method is gshared and marshalbyref, since gshared
2416         methods can' have wrappers. Fixes #569390.
2417
2418         * generics.cs: Add a test.
2419
2420 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2421
2422         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2423         callable from gdb.
2424
2425 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2428
2429 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2432         since it is not supported in win2000.
2433
2434 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2435
2436         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2437         error if loading an assembly fails.
2438         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2439
2440         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2441         if exists.
2442
2443         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2444         compiled methods.
2445
2446         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2447
2448         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2449         is not supported yet.
2450
2451         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2452
2453 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2454
2455         * method-to-ir.c: All types with variant arguments must fallback to the
2456         slow path. This makes cast of variant delegates work.
2457
2458         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2459         argument that is set to TRUE is the returned vtable slot is for a variant
2460         interface. Changed a g_print + g_assert_not_reached to a g_error.
2461
2462         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2463         a similar fashion of generic virtual methods.
2464
2465 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2466
2467         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2468         when cfg is null.
2469
2470         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2471         method using a variance aware function.
2472
2473         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2474
2475 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2476
2477         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2478         do an icall for now.
2479
2480 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2483         If LLVM decides to set the code model to Large, reset it to Default.
2484
2485 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2488         stripped binaries as well.
2489
2490 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2493         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2494
2495         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2496         reg.
2497
2498 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2501         separate function.
2502
2503         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2504         as the type info to llvm.eh.selector.
2505         (exception_cb): Use the type info for filling out some fields of
2506         MonoJitExceptionInfo like the flags and the exception class. This is needed
2507         because the LLVM produced exception handling clauses might not match the original
2508         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2509
2510         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2511         separate function. Add an extra argument which returns the type infos
2512         corresponding to the exception clauses.
2513
2514         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2515         exception handling clauses.
2516
2517 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2520         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2521         to fix an AOT case.
2522
2523 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2526         internal assembly.
2527
2528 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2531         llvm code.
2532
2533 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2534
2535         * mini.c (mini_method_compile): Verify the method before calling
2536         mono_compile_create_vars as this might crash since it uses method
2537         information.
2538
2539         Fixes #560196.
2540
2541 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2544         one case if AOTing, since the class might not be a concrete class.
2545
2546 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2547
2548         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2549         functions which are now defined in mempool-internals.h.
2550
2551         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2552
2553         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2554
2555 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2556
2557         * mini.c:
2558         * method-to.ir.c:
2559         * mini-*.c: Properly handle generic enums.
2560
2561         Fixes #566294
2562
2563 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2566         in a few more places.
2567
2568 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2571         nullable parameters. Fixes #567351.
2572
2573 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2574
2575         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2576
2577 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2580         mono_get_generic_context_from_code () call.
2581
2582         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2583
2584 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2587         needed.
2588
2589 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2590
2591         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2592         mono_method_get_signature returns NULL. Fix #567084
2593
2594 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2597         instead of once for each module.
2598
2599 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * debugger-agent.c (ss_start): Implement step over for the last sequence
2602         point in methods.
2603
2604         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2605         have the STEP_LOC flag set.
2606
2607         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2608         fails. Fixes #566689.
2609
2610 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * mini.c (mono_add_seq_point): New helper function.
2613         (mono_save_seq_point_info): New function to save sequence point info, extracted
2614         from mini_method_compile ().
2615
2616         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2617
2618         * mini.h (MonoSeqPointInfo): New structure containing information about
2619         the sequence points of a JITted method.
2620         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2621         'bucket' field.
2622
2623         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2624         point information is stored, use a MonoSeqPointInfo structure instead of a
2625         GPtrArray. For each seq point, compute a list of successor seq points.
2626
2627         * debugger-agent.c: Use the successor list to implement step-over more
2628         efficiently: instead of single stepping until a different line/IL offset is
2629         reached, place breakpoints into all successor seq points.
2630
2631         * mini.h: Bump AOT file format version.
2632
2633 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2636
2637         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2638
2639 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2642         build.
2643
2644 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2647         alloca as g_malloc is not signal safe.
2648
2649 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2652         VALGRIND_DISCARD_TRANSLATIONS.
2653
2654         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2655         checks, they are no longer needed.
2656
2657         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2658         a function into a sigctx which can handle function pointers.
2659
2660         * mini-ppc.c: Implement soft debugger support on ppc64.
2661
2662         * mini-ppc.c: Implement soft debugger support.
2663
2664 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2667
2668 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2669
2670         * mini.c (mono_get_runtime_build_info): include Mono version in
2671         the returned value.
2672
2673         * driver.c (mono_main): VERSION is now included in the string
2674         returned from mono_get_runtime_build_info()
2675
2676 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2679         signatures. Fixes #565143.
2680
2681         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2682
2683 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2684
2685         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2686
2687 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2688
2689         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2690         making max stack 10x smaller.
2691
2692 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2693
2694         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2695
2696 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2697
2698         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2699
2700 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2703         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2704
2705         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2706
2707         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2708
2709         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2710
2711         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2712         the compilation.
2713
2714 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2715
2716         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2717         raise an invalid program exception.   
2718
2719         For other opcodes that we might not handle use a g_warning and
2720         raise the exception.   Beats termination.
2721
2722         Fixes #561724
2723
2724 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2725
2726         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2727
2728         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2729         by merging the LLVM and !MAP_32BIT cases.
2730
2731 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2732
2733         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2734         sigctx being passed in, as we have no CONTEXT available in the APC.
2735
2736         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2737         for now.
2738
2739         Code contributed under MIT/X11 license.
2740
2741 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2744         in the LLVM backend on AMD64.
2745
2746         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2747         FDE.
2748
2749         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2750
2751         * mini-llvm.c: Export mono_personality for AOT.
2752
2753         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2754
2755         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2756         implicit exception can occur.
2757
2758         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2759         OP_IMPLICIT_EXCEPTION instruction.
2760
2761         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2762
2763         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2764
2765         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2766         inside a protected block.
2767
2768         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2769         trampolines doesn't include the argument.
2770
2771         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2772         trampolines on amd64.
2773
2774         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2775         of RDI.
2776
2777         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2778         disabled for methods with clauses.
2779
2780         * mini-llvm.c: Enable support for catch clauses.
2781
2782         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2783         end of an LLVM compiled finally clause.
2784         (mono_handle_exception_internal): Save the exception handling state in TLS
2785         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2786         resume unwinding from that point.
2787
2788         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2789         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2790         to obtain the addresses of the exception handling regions.
2791
2792         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2793         finally clauses are supported.
2794
2795         * mini.c (mini_method_compile): Add support for LLVM code with exception
2796         handlers.
2797
2798 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2801         proper size.
2802
2803 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2806         as a primitive type.
2807
2808 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2809
2810         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2811         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2812         #564000.
2813
2814 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2815
2816         * method-to-ir.c (mini_redirect_call): do not redirect the
2817         InternalAllocateStr internal call if string profiling is enabled.
2818
2819 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2822         generic methods.
2823
2824         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2825         unwind.h header file.
2826
2827         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2828         newer valgrind versions seems to handle this fine.
2829
2830 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2833         on the debugger thread.
2834
2835 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2838
2839         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2840
2841         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2842
2843         * cpu-<ARCH>.md: Make call_handler clob:c.
2844
2845         * mini.c: Reenable SSA for methods with clauses.
2846
2847         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2848         as it causes failures on x86.
2849
2850 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2851
2852         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2853         returns NULL (e.g. a bad assembly).
2854
2855 2009-12-08  Geoff Norton  <gnorton@novell.com>
2856
2857         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2858         stepping out into native code.  There were issues with nested invokes
2859         like .cctors.
2860
2861 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2862
2863         * mini.c (mini_method_compile): Do the disable_llvm checks early
2864         and avoid the LLVM compile pass if the checks fail.
2865
2866         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2867
2868         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2869         LLVM optimizations don't try to remove them.
2870
2871         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2872         different file so the original remains.
2873
2874 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2875
2876         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2877
2878         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2879
2880         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2881         support for non-inline unwind descriptors.
2882
2883 2009-12-07  Geoff Norton  <gnorton@novell.com>
2884
2885         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2886         the interrupt_count slightly differently.  Native threads were never
2887         marked as resumed.
2888
2889 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2892         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2893         yet generate this info.
2894
2895         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2896
2897         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2898         client can distinguish between intptrs and longs.
2899
2900 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2903         blob.
2904
2905         * aot-runtime.c (load_function): Update after the change above.
2906
2907         * mini.h: Bump AOT file format version.
2908
2909         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2910         if the delegate class is dynamic.
2911
2912         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2913         in gshared code too using the new rgctx info type
2914         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2915
2916 2009-12-04  Geoff Norton  <gnorton@novell.com>
2917
2918         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2919         we need to track the original suspend count so the thread properly
2920         wakes up in resume_thread.
2921
2922 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2923
2924         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2925         code.
2926
2927         * generics.cs: Add a test.
2928
2929         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2930         is 0. Simplify a lot of code using this.
2931
2932         * mini-trampolines.c (mono_delegate_trampoline): Call
2933         mono_create_static_rgctx_trampoline () before saving the final address in
2934         delegate->method_code, to avoid calling it each time a delegate is first called.
2935
2936         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2937         which need static rgctx trampolines.
2938
2939         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2940         keyed on the method+addr pair, since addr could be either the method addr or
2941         an unbox trampoline in the AOT case. Fixes #560246.
2942
2943 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2946         place it was called before too.
2947
2948 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2951         if no security manager is present, to speed up the AOT case. Call
2952         mono_class_vtable () full with raise_on_error == TRUE instead.
2953
2954 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2957         the local optimization passes can take its result into account. Fixes
2958         #559876.
2959
2960         * exceptions.cs: Add a test.
2961
2962 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2963
2964         This patch is contributed under the terms of the MIT/X11 license
2965
2966         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2967
2968 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2971
2972         * debugger-agent.c: Rework the handling of stack traces of running threads to
2973         avoid crashes if compute_frames () tries to walk the stack of running thread.
2974
2975         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2976
2977         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2978
2979         * mini.h (StackFrameInfo): Add an 'lmf' field.
2980
2981 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * debugger-agent.c (suspend_current): Always set really_suspended.
2984
2985         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2986
2987         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2988
2989 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2992         really suspended.
2993
2994 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2997
2998 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2999
3000         * mini-trampolines.c: Fix MSVC build.
3001
3002 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3003
3004         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3005
3006 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3009         the instruction following an OP_FCOMPARE is optimized away.
3010
3011 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3014         emit_autoreg () into this arch-specific function.
3015
3016         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3017         code, it is no longer needed.
3018
3019         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3020
3021         * mini.h: Bump AOT file format version.
3022
3023         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3024         using the sorted_code_offsets array, instead of reading it from the
3025         exception debug info.
3026         (load_method): Call mono_aot_find_jit_info instead of
3027         decode_exception_debug_info ().
3028
3029         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3030         LLVM compiled as a flag.
3031
3032 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3033
3034         * debugger-agent.c (resume_thread): Fix a warning.
3035
3036         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3037         generated.
3038
3039 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3042         contents to MonoAotFileInfo.
3043
3044 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3047         Put all binary data into a giant blob, similarly to the way .net assemblies
3048         store binary data. Emit offset tables in a compact form to reduce their size.
3049
3050         * mini.h: Bump AOT file format version.
3051
3052         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3053         places.
3054
3055         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3056         avoid linear searches at runtime.
3057
3058         * aot-runtime.c (find_symbol): Update this to use the hash.
3059
3060         * mini.h: Bump AOT file format version.
3061
3062 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3065         container.
3066
3067         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3068         too.
3069
3070         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3071         the distribution of got slot types.
3072
3073         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3074
3075         * method-to-ir.c: Add support for generating explicit null checks.
3076
3077 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3080         on a random thread if possible.
3081
3082         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3083         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3084         correctly.
3085
3086         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3087         regs. Pass the real size of the regs array to mono_unwind_frame ().
3088
3089         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3090         ones instead.
3091
3092 2009-11-24  Geoff Norton  <gnorton@novell.com>
3093
3094         * mini-darwin.c: Work around apple bug rdar://7209349  See
3095         http://openradar.appspot.com/7209349 for details.  Synopsis,
3096         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3097         never been initialized before.
3098
3099 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3102
3103         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3104
3105 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3108         OP_SHL_IMM is not 32 bit.
3109
3110 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3113
3114 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3117         encountered.
3118
3119         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3120         > 0 since some threads can resume if their resume_count is > 0.
3121         (invoke_method): Avoid reading freed memory.
3122
3123         * debugger-agent.c (process_suspend): Extract the suspend code from
3124         process_single_step_inner () to a separate function. Rework the code to prevent
3125         races between this function and thread interrupts.
3126
3127         * debugger-agent.c (suspend_current): Check the resume_count field instead
3128         of resume_one so suspends+resumes during single threaded invokes work
3129         correctly.
3130
3131 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3134         to make the generated code smaller.
3135
3136         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3137         sequence generated by recent LLVM versions.
3138
3139         * mini-llvm.c: Add support for a few simple cases which weren't supported
3140         before.
3141
3142         * mini-trampolines.c (mono_magic_trampoline): Don't call
3143         mono_arch_get_vcall_slot () when llvm is enabled.
3144
3145         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3146
3147         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3148         into a new function called common_call_trampoline () which is used by the
3149         llvm vcall trampoline as well.
3150
3151         * debugger-agent.c: Implement single threaded invokes.
3152
3153         * debugger-agent.c: Revert change which broke the agent on linux.
3154
3155         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3156         #557606.
3157
3158         * generics.cs: Add a test.
3159
3160 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * debugger-agent.c: Fix the cygwin build.
3163
3164 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3165
3166         * cprop.c: Remove this unused file.
3167
3168 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3171         #557262.
3172
3173         * basic.cs: Add a test.
3174
3175 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3176
3177         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3178         in one more place.
3179
3180 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3183         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3184         it. Use this flag to control llvm related code paths instead of #ifdef
3185         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3186         AOT code.
3187
3188         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3189
3190         * mini.h: Bump AOT file format version.
3191
3192         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3193         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3194
3195         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3196         was used as an assembly filter.
3197
3198 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * unwind.c: Fix support for ppc.
3201
3202         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3203         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3204
3205 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3206
3207         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3208         port.
3209         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3210         added by the ps3 changes.
3211
3212 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * mini-gc.c: Resurrect this, so at least it compiles.
3215
3216         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3217
3218 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3221         create_event_list () so assembly filters can be used.
3222
3223         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3224         from the LMF.
3225
3226 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3229         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3230         is disabled.
3231
3232         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3233         classes for char/bool too.
3234
3235         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3236
3237         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3238         used.
3239
3240         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3241         Fix warnings.
3242
3243 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3244
3245         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3246         
3247         Code contributed under MIT/X11 license.
3248
3249 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3250
3251         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3252         threads in native code work.
3253
3254         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3255         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3256         version.
3257
3258 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3259
3260         * debugger-agent.c: Implementation for Windows platform.
3261
3262         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3263         primitives. Use SEH to implement breakpoints and single stepping.
3264
3265         * mini-x86.h: Enable soft debugger on Windows.
3266
3267         Code contributed under MIT/X11 license.
3268
3269 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3272         under XEN. Fixes #522894.
3273
3274         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3275
3276         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3277         interface calls in LLVM AOT code.
3278
3279         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3280         is found.
3281
3282         * mini-llvm.c: Add support for OP_VPHI.
3283
3284         * objects.cs: Add a test.
3285
3286 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3289         this is called on the debugger thread.
3290
3291 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3292
3293         * mini-llvm.c: Add soft-float support.
3294
3295         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3296         FCALL which returns an R4.
3297
3298         * driver.c (mono_main): Add a missing '\n'.
3299
3300         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3301         platforms which doesn't support the LLVM IMT trampoline.
3302
3303 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3306
3307         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3308
3309         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3310         virtual calls.
3311
3312         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3313
3314 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3317         Instead of emitting a method_order table, sort the contents of the code_offsets
3318         table and do a binary search in the sorted table. The previous approach doesn't
3319         work with LLVM which emits methods in a arbitrary order.
3320
3321         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3322         in the .eh_frame section in ELF files.
3323
3324         * mini.h: Bump corlib file format version.
3325
3326         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3327
3328         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3329         LDMIA->LDM macro name change.
3330
3331 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3334         x86.
3335
3336         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3337         SVN.
3338
3339         * aot-compiler.c: Ditto.
3340
3341         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3342         &align to mini_type_stack_size_full ().
3343
3344         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3345
3346         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3347
3348 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3349
3350         * mini-arm.c: Compute the stack space used by arguments using
3351         mini_type_stack_size_full ().
3352
3353 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * optflags-def.h: Remove dead TREEPROP optimization.
3356
3357 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3358
3359         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3360
3361         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3362
3363 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * driver.c (mono_jit_parse_options): New public API function to parse options
3366         as done by the runtime executable.
3367
3368         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3369         when handling named arguments.
3370
3371 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3374         for passing small vtypes in registers, make the CallInfo structures more
3375         similar to the code on the other platforms.
3376
3377         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3378         the code in the prolog requires it.
3379
3380 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3383         (koush@koushikdutta.com).
3384
3385         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3386         where the thunk memory should be allocated from. Fixes appdomain unloading
3387         on arm.
3388
3389 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3392         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3393
3394 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3397         AOT, as it is not implemented yet.
3398
3399         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3400
3401 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3402
3403         * debugger-agent.c: Fix windows build.
3404
3405 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3408         after the client connects/disconnects.
3409
3410         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3411         when an exception of a given type is thrown.
3412
3413         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3414         only on an uncaught exception.
3415
3416         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3417
3418         * debugger-agent.c: Add a 'launch' option.
3419
3420 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * debugger-agent.c: Add a 'timeout' option.
3423
3424 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3425
3426         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3427         the JDWP agent.
3428
3429 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * debugger-agent.c (set_breakpoint): Emit a log message.
3432
3433 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3434
3435         * mini-arm.c: Fix the arm build.
3436
3437 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3438
3439         * aot-compiler.c: don't leak the value returned from
3440         mono_type_full_name().
3441
3442 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3443
3444         * debugger-agent.c: defer including mono-mutex.h until we know the
3445         agent is supported.
3446
3447 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3448
3449         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3450         of pthreads directly.
3451
3452         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3453         exception handlers. Pass info argument.
3454
3455         * mini.h: Adjust signatures of soft debugger functions to pass void*
3456         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3457
3458         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3459         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3460         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3461         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3462
3463         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3464
3465         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3466         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3467         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3468         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3469
3470         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3471
3472         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3473
3474         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3475
3476         * mono-semaphore.h: Skeleton implementation for Windows.
3477
3478         Code contributed under MIT/X11 license.
3479
3480 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3481
3482         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3483
3484         Code contributed under MIT/X11 license.
3485
3486 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3487
3488         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3489
3490         Code contributed under MIT/X11 license.
3491
3492 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3495         debug info to 100 because 10 still slows down gdb too much.
3496
3497         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3498         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3499         them in the wrappers.
3500
3501 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3504
3505         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3506
3507         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3508         function mono_aot_get_array_helper_from_wrapper ().
3509
3510         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3511         array helper methods.
3512
3513 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3516         the value was loaded from memory.
3517
3518         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3519         the value was loader from there.
3520
3521         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3522         without constant swizzle.
3523
3524 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3525
3526         * mini-amd64.c: Put soft debugger functions behind a
3527         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3528
3529         * mini-amd64.h: disable the soft debugger in windows.
3530
3531         Code contributed under MIT/X11 license.
3532
3533 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3534
3535         * mini-x86.c: Put soft debugger functions behind a
3536         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3537
3538         Code contributed under MIT/X11 license.
3539
3540 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3541
3542         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3543         to mono_arch_find_jit_info_ext.
3544
3545         Code contributed under MIT/X11 license.
3546
3547 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3550
3551         * debugger-agent.c: Add support for filtering events by assemblies.
3552
3553         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3554         the agent is not enabled.
3555
3556 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3557
3558         * exceptions-x86.c: hopefully last change to fix the windows build.
3559         This one courtesy of Jonathan Chambers.
3560
3561 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3562
3563         * debugger-agent.c: remove unused function.
3564
3565 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3566
3567         * debugger-agent.c: add #ifdefs for a few header files.
3568         * mini-x86.h: disable the soft debugger in windows.
3569         Step 1 of 2 to make this compile on windows with gcc.
3570
3571 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3572
3573         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3574         as it breaks the build.
3575
3576 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3577
3578         Merge the soft debugger branch.
3579
3580         * debugger-agent.h debugger-agent.c: New files containing the soft
3581         mode debugger module.
3582
3583         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3584         at the appropriate locations.
3585
3586         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3587         opcode.
3588
3589         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3590         enable/disable single stepping.
3591
3592         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3593         which returns all information in a StackFrameInfo structure, and can handle the
3594         LMF frames added by the debugger.
3595
3596         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3597         about an LMF frame.
3598
3599         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3600         walker function which works on a specific thread and passes a StackFrameInfo
3601         structure to its callback.
3602
3603         * mini.c (mini_init): Initialize the debugger agent.
3604
3605         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3606
3607         * mini-ops.h: Add OP_SEQ_POINT opcode.
3608
3609         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3610         arguments to the debugger agent.
3611
3612 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3615         speed things up.
3616
3617         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3618
3619         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3620
3621         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3622
3623         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3624         if needed.
3625         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3626         sets the IMT argument and makes a virtual call.
3627
3628         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3629
3630 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3633         the windows build.
3634
3635 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3638         runtime. Fixes #551228.
3639
3640 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3641
3642         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3643
3644         * basic.cs: Add a test.
3645
3646         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3647         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3648         CONSTRAINED. Fixes #550964.
3649
3650         * generics.cs: Add a test.
3651
3652 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3653
3654         * mini-posix.c (add_signal_handler): Use
3655         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3656
3657 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3658
3659         Contributed under the terms of the MIT/X11 license by
3660         Jerry Maine <crashfourit@gail.com>.
3661
3662         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3663         sse4a for simd intrinsics.
3664
3665         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3666         sse4a for simd intrinsics.
3667
3668 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3669
3670         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3671         instead of inst_p1 which is not the same on ILP32 platforms.
3672
3673 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3676         not the mscorlib one before calling mono_get_lmf_addr.
3677
3678         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3679         of the ip to the LMF.
3680
3681         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3682         immediate in the op->op_imm optimization.
3683
3684         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3685         understand. VTypes now work, but are not abi compliant, as they are
3686         split into 4 byte parts instead of 8.
3687         (emit_memcpy): Fix the unrolled case to work on the PS3.
3688
3689         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3690
3691         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3692         the default when static linking.
3693
3694         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3695
3696         * aot-compiler.c: Add an autoreg option to automatically register
3697         statically linked aot modules using ELF .ctors.
3698
3699         * genmdesc.pl: Add __ppc64__ to allowed defines.
3700
3701 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3704         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3705
3706 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3707
3708         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3709
3710 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3713         which will contain the domain where the method was found.
3714
3715         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3716         mini_jit_info_table_find ().
3717
3718         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3719
3720         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3721
3722 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3725         set, its not supported yet.
3726
3727 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3730         iface wrapper is not found.
3731         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3732
3733 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3736         which have a different name.
3737
3738         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3739         wrappers and Array.GetGenericValueImpl ().
3740
3741         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3742         because of the change above.
3743
3744         * generics.cs: Add a test for full aot + generic array ifaces.
3745
3746 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3747
3748         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3749         that hides the previous one.
3750
3751 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3752
3753         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3754         marshalled. Fixes #541623.
3755
3756 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3759
3760 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3763
3764 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3765
3766         * mini-posix.c (sigprof_signal_handler):
3767         Implemented support for building stat call chans in different ways.
3768
3769 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3770
3771         * mini-exceptions.c (mono_find_jit_info):
3772         Also check that a jit info has been found (fixes a profiler crash).
3773
3774 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3775
3776         * mini.c (mono_codegen):
3777         Call mono_profiler_code_buffer_new with correct code address.
3778
3779 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * driver.c (mono_main): Change the date in the copyright.
3782
3783 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3784
3785         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3786         allocator in shared generic code for open classes, because we
3787         can't get those classes' vtables.  We need to make managed
3788         allocators not depend on the vtable at compile-time to solve this.
3789
3790 2009-10-13  Martin Baulig  <martin@ximian.com>
3791
3792         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3793         `const guint8 *trampoline' argument; send both the old and the new
3794         notification.
3795
3796 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3799         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3800         (can_marshal_struct): Skip structures with auto layout.
3801
3802         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3803
3804 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3807         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3808         a variable to hold the stack slot used by the int<->float conversion opcodes.
3809
3810         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3811
3812 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3815         when using full-aot.
3816
3817 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3818
3819         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3820         each instance of Comparer<T>.
3821
3822         * generics.cs: Add a new test.
3823
3824 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * driver.c (parse_debug_options): Add a 'gdb' option.
3827
3828         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3829
3830         * image-writer.c: Add support for emitting the image into a memory buffer.
3831
3832         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3833
3834         * aot-compiler.c: Add support for registering debug info with GDB using the
3835         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3836         MONO_XDEBUG to 'gdb'.
3837
3838 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3841         gdb mode.
3842
3843 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3844
3845         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3846         can be used to set breakpoints in gdb.
3847
3848         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3849         segment to an absolute address.
3850
3851 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3852
3853         * method-to-ir.c: Use the managed array allocator method if
3854         available.
3855
3856 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3857
3858         * aot-compiler.c : Fix the MSVC builds
3859
3860         Code is contributed under MIT/X11 license.
3861
3862 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3865         avoid registering 1 symbol file per method with gdb.
3866
3867 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3868
3869         * mini-sparc.c: Fix the handling of enums with base type long.
3870
3871         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3872
3873         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3874         instead of using type->data.klass as the later doesn't work with generics.
3875
3876 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3877
3878         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3879         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3880         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3881         works differently now and we don't handle it in the JIT anymore.
3882
3883         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3884         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3885         the Thread class split.
3886
3887 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * driver.c: Don't run tests with the obsolete treeprop optimization.
3890
3891         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3892         variable volatile. Fixes #541577.
3893
3894         * basic-calls.cs: Add a new test.
3895
3896         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3897
3898 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3901         work/required with recent iphone sdk versions.
3902
3903         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3904         structures.
3905
3906         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3907         in the VCALL decomposition code.
3908
3909 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3910
3911         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3912
3913         * basic.cs: Add a test.
3914
3915         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3916         generic invokes.
3917
3918         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3919         searches all the domains of the current thread.
3920
3921         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3922
3923 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3924
3925         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3926         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3927
3928         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3929         for non-jit trampolines.
3930
3931         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3932
3933         * aot-compiler.c (add_wrappers): Ditto.
3934
3935         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3936         the size of the param area used by dyn_call to 6 which covers the majority of
3937         methods.
3938
3939         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3940
3941         * mini-arm.c: Implement support for passing/receiving
3942         longs and receiving floats in the dyn_call code.
3943
3944         * mini-amd64.c: Implement support for receiving vtypes in registers in
3945         the dyn_call code.
3946
3947         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3948         the dyn_call code.
3949
3950 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3951
3952         * mini-arm.c (get_call_info): Return more precise information in
3953         ArgInfo->regtype.
3954         (dyn_call_supported): Use the information in CallInfo.
3955
3956         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3957
3958         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3959         code.
3960
3961         * mini-arm.c: Update after the dyn_call api changes.
3962
3963         * mini.c (mini_create_jit_domain_info): Register a destructor function
3964         for the runtime_invoke_hash.
3965
3966         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3967         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3968         this function.
3969         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3970         (dyn_call_supported): Simplify this by using get_call_info ().
3971         (mono_arch_dyn_call_free): New destructor function.
3972
3973         * generics.cs: Remove a printf.
3974
3975         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3976
3977         * mini-arm.c: Add support for enum return values and passing a few arguments
3978         on the stack.
3979         
3980         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3981         dyn invoke.
3982
3983         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3984
3985         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3986         the dynamic invoke wrappers.
3987
3988         * mini-arm.c: Implement OP_DYN_CALL for arm.
3989
3990         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3991         supported by the dynamic runtime invoke wrapper.
3992
3993         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3994         runtime invoke wrapper.
3995
3996         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3997         if possible when running with full-aot.
3998
3999         * mini-ops.h: Add OP_DYN_CALL opcode.
4000
4001         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4002         with dynamic arguments lists similar to libffi.
4003
4004 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4007         
4008         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4009         to NEWARR.
4010
4011         * iltests.il.in: Add a new test.
4012         
4013 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * aot-compiler.c (add_generic_instances): Add more instances of
4016         GenericEqualityComparer.
4017
4018 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4019
4020         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4021
4022 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4023
4024         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4025         comments on some functions that now can fail.
4026
4027 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4028
4029         * Makefile.am: Add Info.plist to EXTRA_DIST
4030
4031 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4032
4033         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4034         static synchronized wrappers. Fixes #539500.
4035
4036 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4037
4038         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4039         properly.
4040
4041 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4042
4043         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4044         lmf before calling filter clauses as well. Fixes #539550.
4045
4046         * exceptions.cs: Add a test.
4047         
4048 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4049
4050         * aot-compiler.c (add_generic_class): Add instances of
4051         Array.GetGenericValueImpl as well.
4052
4053         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4054         can be tested too.
4055
4056         * generics.cs: Add a fullaot linq test.
4057
4058 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4061         reg r1 on arm.
4062
4063 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4064
4065         * mini-trampolines.c (mono_delegate_trampoline) : Call
4066           mono_cominterop_get_invoke if the delegate target object
4067           is a COM object.
4068
4069         Code is contributed under MIT/X11 license.
4070
4071 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4072
4073         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4074         internal call is defined outside platform code. Reduce code 
4075         duplication with existing [Method|Field]AccessException
4076
4077 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4078
4079         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4080         if the return value is a small struct passed on regs.
4081
4082 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4085
4086         * mini-codegen.c: Enable the cpu description validation for arm.
4087
4088 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4091         test which depends on structs to objects.cs.
4092         
4093         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4094         require object model related stuff working.
4095
4096         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4097
4098         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4099
4100         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4101         against the instruction metadata in mini-ops.h. amd64 only for now.
4102
4103         * mini-ops.h: Fix some instruction descriptions.
4104
4105         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4106         unused instructions.
4107
4108 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * exceptions.cs: Add a new test.
4111
4112 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4113
4114         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4115
4116 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4119         skip empty phi opcodes.
4120         
4121         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4122         correctly by zero extending after loads. Skip methods containing calls
4123         to the monitor enter/exit trampolines.
4124
4125         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4126         when calling mono_thread_force_interruption_checkpoint ().
4127
4128         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4129
4130         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4131         64 bit thunks.
4132         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4133
4134         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4135         bootstrap could run.
4136
4137 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4140
4141 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4142
4143         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4144         of the method to
4145         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4146         LLVM might be very short.
4147
4148         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4149         in OP_THROW/RETHROW.
4150
4151         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4152         alignment on osx.
4153
4154 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4155
4156         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4157         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4158         LLVM might be very short.
4159
4160 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4163         the alignment for the value of sp.
4164
4165 2009-09-01  Geoff Norton  <gnorton@novell.com>
4166
4167         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4168         managed wrappers in full aot.
4169
4170 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4173
4174 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4177
4178 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4181
4182         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4183         saved info.
4184
4185         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4186
4187         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4188         depend on the info MonoMethodHeader which could be missing in IL stripped
4189         assemblies.
4190
4191 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4194         they are only 4 byte aligned.
4195
4196 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4197
4198         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4199         was done previously, since using SP causes too many problems.
4200
4201         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4202         frames without a frame pointer works.
4203
4204         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4205         global register in methods with calls, since the calls can go through
4206         a static rgctx trampoline which doesn't save it.
4207
4208 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4211
4212 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4213
4214         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4215
4216 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4217
4218         * method-to-ir.c: Fix warnings for uninitialized variables.
4219
4220 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4221
4222         * mini-exceptions.c:
4223         * aot-compiler.c: Fix printf warnings.
4224
4225 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4228         Add GetGenericValueImpl<string>.
4229         
4230         * aot-compiler.c (add_generic_instances): Add instances of
4231         GenericEqualityComparer<T> for primitive types. Only emit the array
4232         wrappers into the mscorlib image.
4233
4234 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4235
4236         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4237         the methods_loaded array using amodule->info->nmethods.
4238
4239         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4240         (MONO_AOT_FILE_VERSION): Bump this.
4241
4242         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4243         to work.
4244
4245         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4246         MonoJitInfo doesn't belong to its methods aot image.
4247
4248 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4249
4250         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4251
4252         * mini-arm.c: Fix warnings.
4253         
4254         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4255
4256         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4257         supports it.
4258
4259 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4260
4261         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4262         avoid clobbering IP.
4263
4264         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4265         hold the trampoline argument, so its initial value is available during
4266         debugging.
4267
4268 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4269
4270         * exceptions-arm.c:
4271         * exceptions-hppa.c:
4272         * mini.c:
4273         * exceptions-s390x.c:
4274         * exceptions-mips.c:
4275         * exceptions-ppc.c:
4276         * exceptions-sparc.c:
4277         * exceptions-alpha.c:
4278         * aot-runtime.c:
4279         * mini-trampolines.c:
4280         * exceptions-x86.c:
4281         * exceptions-s390.c: add and use #define's instead of sizeof()
4282         for MonoJitInfo and MonoJitInfoTable.
4283
4284 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4285
4286         * tramp-arm.c:
4287         * tramp-amd64.c:
4288         * tramp-ppc.c:
4289         * tramp-x86.c: use a #define instead of sizeof() for a few
4290         structures that use a zero-length array.
4291
4292 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4295         case when the method is dynamic. Fixes #529238.
4296
4297 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4298
4299         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4300         of asserting when a method is JIT compiled in full-aot mode.
4301
4302 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4303         
4304         Contributed under the terms of the MIT/X11 license by
4305         Jerry Maine <crashfourit@gail.com>.
4306         
4307         * fixed wrong dates in changelog.
4308
4309 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4310         
4311         Contributed under the terms of the MIT/X11 license by
4312         Jerry Maine <crashfourit@gail.com>.
4313
4314         * basic-simd.cs: added test for packed double square root.
4315         * cpu-amd64.md: added opcode info for packed double square root.
4316         * cpu-x86.md: added opcode info for packed double square root.
4317         * mini-ops.h: added IR opcode for packed double square root.
4318         * mini-x86.c: added IR to native translation code for packed double square root.
4319         * mini-amd64.c: removed todo for packed double square root.
4320         * simd-intrinsics.c: added method to IR opcode converstion for
4321         packed double square root.
4322
4323 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4324
4325         Contributed under the terms of the MIT/X11 license by
4326         Jerry Maine <crashfourit@gail.com>.
4327
4328         * mini-amd64.c: Added a change to help tell the difference as 
4329         to what perpose the xmm register is being used--mainly to help
4330         with debuging.
4331         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4332         (one used for special cases) xmm registers for both fp
4333         and simd ops. Added define to turn on new feature in the regalloc
4334         that allows fp and simd ops to share the xmm regs happily.
4335         * codegen.c: Added code to detect for which perpose an xmm reg is
4336         being used (fp or simd) and to translate back and forth to the
4337         correct logical reg bank (fp or simd) for 'spill load's.
4338
4339 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4340
4341         Contributed under the terms of the MIT/X11 license by
4342         Jerry Maine <crashfourit@gail.com>.
4343
4344         * basic-simd.cs: Added tests for stressing the regalloc when running with
4345         16 simd regs and when simd and fp ops share the same reg bank.
4346
4347 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4348
4349         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4350         in shared generic code, we might have to look up the class in the
4351         RGCTX.  If we use the class directly, compute its GC descriptor.
4352
4353 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4354
4355         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4356
4357 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4358
4359         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4360         check for errors. Fixed the case when the class with the Main
4361         method is broken.
4362
4363 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4364
4365         Contributed under the terms of the MIT/X11 license by
4366         Jerry Maine <crashfourit@gail.com>.
4367
4368         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4369
4370 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4373
4374 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * method-to-ir.c: Fix naming of stelem and ldelem.
4377
4378 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * driver.c (main_thread_handler): Check that the assembly loaded
4381         matches the filename when doing AOT.
4382
4383 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4384
4385         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4386         call it anymore.
4387
4388         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4389         utils/mono-sigcontext.h).
4390
4391         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4392         #ifdef.
4393
4394 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4395
4396         * mini.c (mono_codegen):
4397         Call profiler hook to keep track of method code buffers.
4398
4399 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4400
4401         * method-to-ir.c: Invoke write barriers for the
4402         Interlocked.(Compare)Exchange JIT intrinsics.
4403
4404 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4405
4406         * Makefile.am (version.h): Fix issues when built out of tree.
4407         Remove some redundant 'grep's piped through 'sed's.
4408
4409 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4410
4411         This patch is contributed under the terms of the MIT/X11 license
4412
4413         * mini-ppc.c (mono_arch_output_basic_block):
4414         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4415         for bits 32-47 with signed load/store diplacements for bits
4416         48-63.  Use prefered base/offset order for indexed form.
4417         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4418         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4419         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4420         OP_LOADI2_MEMBASE): Same.
4421         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4422         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4423         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4424         indexed form.
4425         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4426         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4427         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4428         OP_LOADI1_MEMINDEX): Same
4429         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4430         OP_STORER8_MEMINDEX): Same
4431         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4432         computations.
4433         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4434         for bits 32-47 with signed load/store diplacements for bits
4435         48-63.  Use prefered base/offset order for indexed form.
4436
4437 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4438
4439 This patch is contributed under the terms of the MIT/X11 license
4440
4441         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4442         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4443         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4444         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4445         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4446         cfg->stack_usage to avoid size warnings.
4447         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4448         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4449         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4450         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4451         to convert.
4452         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4453         after code varible is initialized.
4454         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4455         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4456         (mono_arch_emit_epilog): 
4457         Move Use ppc_load32 for cfg->stack_usage to avoid size
4458         warnings.
4459
4460 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4461
4462         * method-to-ir.c: The write barrier doesn't do the store anymore,
4463         so we have always to emit it.  Also, emit the wbarrier after the
4464         store.
4465
4466 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4467
4468         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4469         for argument count 3 too.
4470
4471 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4474         the caller handle the exceptions.
4475         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4476         method. Fixes #524498.
4477
4478 2009-07-22  Geoff Norton  <gnorton@novell.com>
4479
4480         * mini-exceptions.c: Fix build on ia64.
4481
4482 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4483
4484         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4485         barriers.
4486
4487 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4490         code.
4491
4492 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * basic-simd.cs (Main): Pass args to the test driver.
4495
4496 2009-07-20  Geoff Norton  <gnorton@novell.com>
4497
4498         * mini-x86.h: Fix the x86 version guards to use Apple's
4499         properly defined macros.
4500
4501 2009-07-20  Geoff Norton  <gnorton@novell.com>
4502
4503         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4504         aligned access.
4505
4506 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4509         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4510         the information which is needed for invokes, so only one locking+hash table
4511         lookup is needed.
4512
4513         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4514         
4515         * aot-compiler.c (add_generic_instances): Emit instances of 
4516         GenericComparer<T> for primitive types.
4517
4518 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4519
4520         * mini-posix.c: Fix linux build.
4521
4522 2009-07-19  Geoff Norton  <gnorton@novell.com>
4523
4524         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4525         mono_gdb_render_native_backtraces
4526         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4527         so we implement the sane semantics to the runtime here
4528         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4529         so we need to call it differently (mono_gdb_render_native_backtraces)
4530         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4531         here for default implementations.
4532         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4533         support Apple's weird syscall (SYS_fork) implementation and not busy
4534         loop in abort() on native crashes on OSX anymore.
4535
4536 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * aot-runtime.c (load_method): Change the handling of the
4539         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4540         are used.
4541
4542         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4543
4544 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4545
4546         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4547         seems to break the aot tests.
4548         
4549         * mini.c (mono_patch_info_equal): Fix the handling of 
4550         MONO_PATCH_INFO_RGCTX_FETCH.
4551
4552 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4555
4556         * mini.c (mono_patch_info_hash): Fix the handling of 
4557         MONO_PATCH_INFO_INTERNAL_METHOD.
4558         (mono_patch_info_equal): Ditto.
4559
4560 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4561
4562         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4563         in a few places.
4564         
4565         * mini-llvm.c: Add some infrastructure for AOT support.
4566
4567 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4568
4569         * mini-llvm-cpp.c: Update to the latest llvm api.
4570         
4571         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4572         option to false to prevent llvm from installing signal handlers which
4573         trip up the gc.
4574         
4575 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4576
4577         * cpu-x86.md:
4578         * cpu-amd64.md: Revert previous change as those instructions
4579         take 2 separate arguments. Remember to read the arch docs more
4580         carefully next time.
4581
4582 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4583
4584         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4585
4586 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4587
4588         * mini-ppc.c: exploit multiple load/store units if available (rest of
4589         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4590         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4591
4592 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4593
4594         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4595         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4596
4597 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * cpu-x86.md: Fix missing clobbering from trancendental simd
4600         ops.
4601
4602         * cpu-amd64.md: Same.
4603
4604 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4605
4606         Contributed under the terms of the MIT/X11 license by
4607         Jerry Maine <crashfourit@gail.com>.
4608
4609         * basic-simd.cs: Added tests for single and doulble indexers.
4610
4611         * cpu-amd64.md: Added simd opcode information.
4612
4613         * mini-amd64.c: Added IR to native simd generation code.
4614         Added simd register names and function that returns them.
4615
4616         * mini-amd64.h: Added marcos to turn on simd code compilation in
4617         amd64. Added max simd register count marco. Added caller/callee
4618         register mask marcos. Added marcos to use simd register bank.
4619
4620         * mini.h: Added helper marco for shufling dwords and simple
4621         floats.
4622
4623 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4626
4627         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4628
4629         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4630         the length of the native code as well.
4631
4632         * basic-simd.cs: Add a test for #521662.
4633
4634 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4635
4636         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4637
4638 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4639
4640         * mini.c: Register function for getting the IP from a signal
4641         context with metadata.
4642
4643 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4644
4645         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4646         call a generic class init trampoline if needed. Fixes #519336.
4647
4648         * generics.cs: Add a test.
4649         
4650 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4651
4652         * method-to-ir.c: When doing a call which might be remote from
4653         shared generic code to other shared code with open type arguments,
4654         get the remoting invoke wrapper from the RGCTX and do an indirect
4655         call to it.
4656
4657 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4660         after the unbox trampoline in the full-aot case.
4661
4662 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4663         
4664         * mini.c: Move initialization of jit_mutex before debugger initialization
4665         
4666         to avoid crashes.
4667         
4668         
4669         * Info.plist: added Info.plist and link flag to enable the mono executable
4670         to access other processes. Requires codesigning of the executable to work.
4671         
4672         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4673         
4674         compile on OS X.
4675         
4676
4677 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4678
4679         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4680
4681 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4684         when the generic instance is an instantiation of a subclass of the
4685         methods class. Fixes #517166.
4686
4687 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4690         code.
4691
4692         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4693         AOTed code.
4694
4695         * CMakeLists.txt: Add minimal support for installation.
4696
4697 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4700         determine whenever a method is directly callable to a separate function.
4701
4702         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4703         needed ones as a result of the previous change.
4704
4705         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4706         type of register arrays.
4707
4708         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4709         type of register arrays.
4710
4711 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4712         
4713         Contributed under the terms of the MIT/X11 license by
4714         Jerry Maine <crashfourit@gail.com>.
4715
4716         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4717
4718 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4721
4722 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4723
4724         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4725         dump of structure return value. Fix some formatting.
4726         * cpu-s390x.md: Fix lengths of instruction sequences.
4727         * mini-s390.c: Minor formatting changes.
4728
4729 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4732         Use sigaction on freebsd as well.
4733
4734 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4737         uses #ifdef on it.
4738         
4739         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4740
4741 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4742
4743         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4744
4745 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4746
4747         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4748
4749 2009-06-20  Martin Baulig  <martin@ximian.com>
4750
4751         * debug-mini.c
4752         (MonoDebuggerThreadFlags): New enum typedef.
4753         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4754         (mono_debugger_thread_created): Added `gpointer func' argument;
4755         initialize the new `thread_flags' field.
4756
4757 2009-06-18  Martin Baulig  <martin@ximian.com>
4758
4759         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4760         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4761
4762         * debug-debugger.c
4763         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4764         flag in `MONO_DEBUGGER__info.runtime_info'.
4765
4766         * driver.c
4767         (mono_main): Call mini_debugger_set_attach_ok() if generics
4768         sharing is disabled.
4769
4770 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * aot-compiler.c (add_wrappers): Fix a warning.
4773
4774         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4775         the ppc load/store macro changes.
4776
4777 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4780
4781         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4782         not just the got symbol.
4783
4784         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4785         on ppc.
4786
4787         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4788         ppc.
4789         
4790         * aot-compiler.c: Remove some fixmes.
4791
4792         * driver.c (mono_main): Print a helpful message when cross-compiling.
4793
4794         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4795
4796         * method-to-ir.c (initialize_array_data): Do the optimization if the
4797         target byte order is little endian, instead of the host byte order.
4798
4799         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4800         wrappers into the mscorlib image, Emit a unique plt symbol for each
4801         image, emit symbols for plt entries.
4802
4803         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4804         a .size directive.
4805         
4806 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4807
4808         * aot-compiler.c (add_wrappers): Avoid calling 
4809         mono_marshal_get_type_info () since it can assert for some types.
4810
4811         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4812         ldtoken are used inside wrappers.
4813
4814         * helpers.c: Add support for prefixing tools with the arch name.
4815
4816         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4817         quantities when using ilp32.
4818
4819         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4820         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4821
4822         * image-writer.c: Use .long on ilp32.
4823
4824         * aot-compiler.c: Use 32 bit loads on ilp32.
4825         
4826 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4827
4828         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4829
4830         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4831
4832         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4833
4834         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4835         second got slot of every aot image.
4836         
4837         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4838         aot on platforms with function pointers.
4839
4840         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4841         support for aot/full aot on ppc/ppc64.
4842         
4843         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4844         arguments which are needed on ppc.
4845
4846         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4847         argument.
4848
4849         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4850         
4851         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4852
4853         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4854
4855         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4856
4857         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4858
4859 2009-06-17  Geoff Norton  <gnorton@novell.com>
4860
4861         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4862
4863 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4866         to control whenever the dwarf writer is in xdebug or aot mode.
4867         (emit_class_dwarf_info): Use a separate abbrev for structures without
4868         children.
4869
4870         * aot-compiler.c: Pass the appending parameter to 
4871         mono_dwarf_writer_create ().
4872
4873         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4874         falls through to its next bblock. Fixes #513931.
4875
4876         * iltests.il: Add a test.
4877
4878         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4879         infor even if emit_line is FALSE, as the apple linker seems to require it.
4880
4881         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4882
4883         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4884         gcc does.
4885         (emit_fde): Ditto.
4886
4887 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4888
4889         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4890         mips build.
4891
4892 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4893
4894         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4895         'has_call_handler' fields.
4896
4897         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4898
4899         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4900         first bblock if not needed. Fixes #512790.
4901         
4902 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4903
4904         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4905         
4906         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4907         wrappers.
4908
4909         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4910         remoting-invoke-with-check wrappers, which are not needed when running with
4911         full-aot, since it doesn't support remoting.
4912         
4913 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4916
4917         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4918         method info, it is not used anymore.
4919
4920         * mini.h: Bump AOT file format version.
4921         
4922         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4923         word smaller.
4924
4925         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4926         change above.
4927         
4928         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4929
4930         * mini.h: Bump AOT file format version.
4931         
4932 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4935         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4936         iphone.
4937
4938         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4939         of CKFINITE and FBGE for VFP.
4940
4941 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * aot-compiler.c: Don't align code to 16 bytes on arm.
4944         
4945         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4946         before the methods they belong to.
4947
4948         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4949         the full-aot case if possible, since the trampoline will be called right 
4950         away.
4951
4952         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4953         trampolines to 1024 after the change above.
4954
4955         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4956         trampoline to save 8 bytes per trampoline.
4957
4958         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4959         change above.
4960
4961 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4964
4965 2009-06-08  Martin Baulig  <martin@ximian.com>
4966
4967         * debug-mini.c
4968         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4969         (_mono_debugger_throw_exception): Don't make this static.
4970         (_mono_debugger_unhandled_exception): Likewise.
4971         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4972
4973         * debug-mini.c
4974         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4975         (_mono_debugger_throw_exception): Add function prototype.
4976         (_mono_debugger_unhandled_exception): Likewise.
4977
4978         * mini-exceptions.c
4979         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4980         arg; return the first exception handler if the exception is caught
4981         and we're running inside the debugger.
4982         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4983         improve exception handle inside runtime-invoke, check whether the
4984         exception is actually caught in the method being invoked and not
4985         by the runtime-invoke-wrapper.
4986
4987 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * image-writer.c: Improve support for the osx assembler.
4990
4991         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4992         support them.
4993
4994 2009-06-08  Martin Baulig  <martin@ximian.com>
4995
4996         * debug-mini.c
4997         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4998         (_mono_debugger_throw_exception): Don't make this static.
4999         (_mono_debugger_unhandled_exception): Likewise.
5000         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5001
5002         * debug-mini.c
5003         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5004         (_mono_debugger_throw_exception): Add function prototype.
5005         (_mono_debugger_unhandled_exception): Likewise.
5006
5007         * mini-exceptions.c
5008         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5009         arg; return the first exception handler if the exception is caught
5010         and we're running inside the debugger.
5011         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5012         improve exception handle inside runtime-invoke, check whether the
5013         exception is actually caught in the method being invoked and not
5014         by the runtime-invoke-wrapper.
5015
5016 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5017
5018         * image-writer.c (append_subsection): Don't align subsections of the
5019         debug_line section as a workaround.
5020
5021         * dwarfwriter.c: Emit line number info in the AOT case as well.
5022
5023 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5024
5025         This patch is contributed under the terms of the MIT/X11 license
5026
5027        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5028        code_len <= code_size
5029
5030 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5031
5032         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5033
5034 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5037         invoke wrappers, we now use trampolines instead.
5038
5039 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5040
5041         * mini-darwin.c: The exception thread must not be registered with
5042         the GC.
5043
5044 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5045
5046         * mini-gc.c: Disable the code because it makes SGen crash.
5047
5048 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5051         instead of asserting.
5052
5053 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5056         output file after the code has been compiled.
5057
5058 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5059
5060         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5061
5062 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5063
5064         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5065         entries distinction to simplify the code.
5066
5067         * mini.h: Bump AOT file format version.
5068         
5069 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5070
5071         * objects.cs: Fix the signature of one of the tests.
5072
5073         * mini.c (mini_create_ftnptr): New helper function, moved here from
5074         object.c.
5075         (mini_get_addr_from_ftnptr): Ditto.
5076         (mini_init): Install the new helpers.
5077
5078 2009-05-28  Martin Baulig  <martin@ximian.com>
5079
5080         Correctly initialize the debugger when embedding Mono.
5081
5082         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5083         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5084         see documentation in mini_debug_running_inside_mdb().
5085
5086         * debug-debugger.c
5087         (mini_debug_running_inside_mdb): New function to check whether
5088         we're running inside mdb.
5089
5090         * mini.c (mini_init): Call mini_debugger_init() if we're running
5091         inside the debugger.
5092
5093         * driver.c (mono_main): Moved the call to mini_debugger_init()
5094         into mini_init() to make this work when embedding Mono.
5095
5096         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5097         calls to mini_debugger_init().
5098
5099         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5100         mono_debugger_main() -> mini_debugger_main() and put them inside a
5101         `MONO_DEBUGGER_SUPPORTED' conditional.
5102
5103 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5104
5105         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5106         this is no longer in use.
5107         * mini.h: Same.
5108
5109 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5110
5111         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5112
5113         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5114         methods.
5115
5116 2009-05-27  Martin Baulig  <martin@ximian.com>
5117
5118 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5119
5120         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5121         long_conv_to_r_un to 64 bits.
5122
5123         * cpu-x86.md: Increase the instruction size due to the changes.
5124
5125         * iltests.il.in: Add regression test.
5126
5127         Fixes #467201.
5128
5129 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5130
5131         * objects.cs: Move the previous test from basic.cs to here.
5132
5133 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5134
5135         * basic.cs: Add regression test for #506915.
5136
5137 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5140         optimization we must check the bb of the first byte of stobj as
5141         it's the only one set in cil_offset_to_bb.
5142
5143         Fixes #506915.  
5144
5145 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * image-writer.c: Fix pointer directive on ppc64.
5148
5149 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * image-writer.c (asm_writer_emit_section_change): Avoid using
5152         .bss subsections on ppc too.
5153
5154 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * image-writer.c: Fix the definition of TARGET_ASM_....
5157         
5158         * image-writer.c: Fix the emission of assembler directives in the last
5159         change.
5160
5161         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5162         exception throwing code to accomodate ppc64.
5163
5164         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5165         size to work on ppc64 too.
5166
5167         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5168         too.
5169
5170         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5171         the assembler dialect instead of using platform specific defines.
5172
5173 2009-05-22  Geoff Norton  <gnorton@novell.com>
5174
5175         * mini-arm.c (get_call_info): If a structure is split between the stack
5176         and argument registers, we should not advance the stack pointer by the entire
5177         native size, but just by the amount that spilled.
5178
5179 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5180
5181         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5182         correctly.
5183
5184 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5185
5186         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5187         wrappers normally.
5188         
5189         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5190         methods so wrapper don't get added twice.
5191         (add_generic_instances): Don't add methods of arrays.
5192
5193         * generics.cs: Mark one test as !FULLAOT.
5194
5195 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5196
5197         * mini-x86.c (emit_move_return_value): Remove unused vars.
5198
5199 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5200
5201         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5202         decomposing 8 bytes structs into a LCALL.
5203
5204         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5205         pointer for where to store the returned regs.
5206
5207         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5208         state the concern.
5209
5210         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5211
5212 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5213
5214         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5215         without getenv.
5216
5217 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5218
5219         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5220
5221         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5222         generics.
5223
5224 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5225
5226         * local-propagation.c (mono_local_cprop): Avoid local propagation
5227         across paired add/sub if the first instruction dest reg is it's
5228         source reg. For example:
5229
5230         int_add_imm R12 <- R12 [1] clobbers: 1
5231         int_sub_imm R42 <- R12 [1] clobbers: 1
5232
5233         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5234         maintain the math identify.
5235
5236         Fixes #505375.
5237
5238 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5239
5240         * Makefile.am: avoid going on the network just to get the revision,
5241         use git log instead
5242
5243 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5244
5245         Fixed estimate for short branches on amd64 (they were off mark, and
5246         enabling call prolog-epilog instrumentations caused assertions).
5247         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5248         estimate for the maximum length of this basic block.
5249         * mini-amd64.c:
5250         - mono_arch_emit_prolog: compute max_length for each basic block
5251           (instead of max_offset), and inflate size estimate also for entry bb
5252           in case of code instrumentation.
5253         - mono_arch_output_basic_block: get rid of "cpos" (the current
5254           estimated "position" in the code), and always use "offset" instead,
5255           which is accurate; at the beginning of the function quickly recompute
5256           max_offset for all the remaining blocks, starting from the current
5257           cfg->code_len (which is correct, and not estimated) and using the
5258           estimated block lengths computed previously.
5259
5260 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5261
5262         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5263         functions, it is already done in the caller.
5264
5265         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5266
5267         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5268         MONO_ARCH_GSHARED_SUPPORTED define.
5269
5270         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5271
5272         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5273         function.
5274
5275 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5278         call to mono_marshal_get_rgctx_invoke ().
5279
5280         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5281         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5282         gshared use the static rgctx trampolines now.
5283         
5284         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5285         platform supports it.
5286
5287 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5290
5291         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5292
5293 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5296
5297         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5298         for ppc.
5299
5300 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5301
5302         Made it possible for mono_arch_instrument_epilog to preserve
5303         argument registers, otherwise instrumenting the "epilogue" before
5304         a tail call would clobber them.
5305         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5306         if like mono_arch_instrument_epilog but with an additional parameter
5307         that states if argument registers must be preserved.
5308         * mini.c: implemented mono_arch_instrument_epilog as a call to
5309         mono_arch_instrument_epilog_full without asking to preserve argument
5310         registers (this makes the existing code work as usual).
5311         * mini-amd64.c:
5312         - mono_arch_instrument_epilog: add parameter to transform it into
5313         mono_arch_instrument_epilog_full, and preserve argument registers
5314         when required.
5315         - mono_arch_output_basic_block, OP_TAILCALL case: call
5316         mono_arch_instrument_epilog_full.
5317         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5318         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5319         only transformed mono_arch_instrument_epilog into
5320         mono_arch_instrument_epilog_full.
5321
5322 2009-05-15  Geoff Norton  <gnorton@novell.com>
5323
5324         * mini-darwin.c: This works on arm now.
5325
5326 2009-05-14  Geoff Norton  <gnorton@novell.com>
5327
5328         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5329         embedding api.
5330
5331 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5334         label names.
5335
5336         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5337         wrappers during full aot mode correctly.
5338
5339         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5340         methods correctly.
5341
5342         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5343         mono_metadata_type_hash ().
5344
5345 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5346
5347         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5348         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5349         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5350         Removed MONO_INST_BRLABEL from the instruction flags, and the
5351         remaining code that used it, because we do not support branches inside
5352         basic blocks (and branch target labels) anymore.
5353         * Makefile.am: As part of the above cleanup, remove reference to
5354         BURG files which don't exist anymore.
5355
5356 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5359         osx.
5360
5361         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5362         to use mono_arch_throw_corlib_exception.
5363
5364         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5365         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5366
5367         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5368         domain mempool.
5369
5370         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5371
5372         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5373         for the got to make debugging easier and to avoid confusing it with the
5374         system got.
5375         
5376         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5377         method so a breakpoint can be set when using gdb.
5378
5379 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5382         on mono_method_get_imt_slot ().
5383
5384         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5385         num_decodes variables.
5386
5387         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5388         change as it doesn't seem to work.
5389         
5390         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5391         wrappers.
5392
5393 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5396         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5397
5398         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5399         builder when using full aot.
5400
5401         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5402         here, it is already handled.
5403         
5404         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5405         correctly for IMT.
5406
5407         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5408
5409         * mini-arm.h: Enable IMT for full aot.
5410         
5411         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5412         arch doesn't support it.
5413
5414         * mini.c (mini_init): Don't disable IMT for full aot if the
5415         architecture supports it.
5416
5417         * mini.h (MonoAotTrampoline): New enum containing the different types
5418         of 'numerous' trampolines.
5419         (MONO_AOT_FILE_VERSION): Bump this.
5420
5421         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5422         static rgctx trampolines. Add support for full-aot IMT thunks.
5423
5424         * mini-amd64.h: Enable IMT for full aot.
5425
5426         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5427         to exclude tests belonging to a category.
5428
5429         * generics.cs: Mark some tests with a !FULLAOT category.
5430
5431         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5432         generics tests.
5433
5434 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5435
5436         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5437         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5438         (emit_plt): Fix a warning.
5439
5440 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5441
5442         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5443         back into aot-compiler.c to a place where the other functions shared by
5444         the runtime and aot compiler are.
5445         
5446         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5447         as done previously, instead of in MonoAotFileInfo, since pointers might have
5448         alignment requirements.
5449
5450         * mini.h: Bump AOT file format version.
5451
5452 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5453
5454         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5455         that is used at runtime from the aot-compiler.c, this makes it
5456         work on setups that remove the AOT compiler from the output
5457         image. 
5458
5459 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5462         PPC.
5463
5464         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5465
5466         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5467
5468         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5469         stuff to mono_arch_decompose_long_opts ().
5470         (mono_decompose_opcode): Remove some dead code.
5471
5472 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5473
5474         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5475         cmethod can be null for quite a some reasons.
5476
5477 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5480
5481 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5484
5485 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5486
5487         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5488         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5489         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5490         calls returning structures by addr on amd64.
5491
5492         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5493
5494         * iltests.il.in: Restructure the tail call tests a bit.
5495         
5496 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5497
5498         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5499         for virtual methods too.
5500
5501 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5502
5503         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5504         due to regression in verifying System.dll.
5505
5506 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5507
5508         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5509         in dynamic methods.
5510
5511         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5512         instances.
5513
5514         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5515         g_str_hash () which can change.
5516
5517         * driver.c (mini_regression): Disable optimizations not supported by
5518         the cpu. Fixes #500019.
5519
5520         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5521         build.
5522
5523 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5526         to the latest LLVM code.
5527
5528 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5531
5532 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5535         x86/amd64.
5536
5537         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5538         no longer saving offsets, so just save the patch types along with the other
5539         info.
5540         * aot-runtime.c (load_patch_info): Update after the changes to 
5541         encode_patch_list ().
5542         (decode_got_entry): Removed, merged into load_patch_info ().
5543         (is_shared_got_patch): Removed, call the same function from
5544         aot-compiler.c.
5545
5546         * mini.h: Bump aot file format version.
5547         
5548         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5549         half-finished no-dlsym code.
5550
5551         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5552         option.
5553
5554         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5555         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5556
5557 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5560         buffer length to work with AOT code.
5561
5562         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5563         ldfld/stfld opcodes.
5564
5565         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5566         as it is not used.
5567
5568         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5569
5570         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5571
5572         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5573         LLVM API.
5574
5575         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5576         if needed. Don't decompose long operations when using llvm.
5577
5578 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5579
5580         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5581         PAGESIZE constant.
5582
5583         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5584
5585 2009-05-03  Martin Baulig  <martin@ximian.com>
5586
5587         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5588         mono_debugger_insert_method_breakpoint() since the class init
5589         handler we're inserting at the top of the method already gives us
5590         a notification.
5591
5592 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5595         to mono_arch_decompose_long_opts () for x86 and arm.
5596
5597 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5600         TARGET_AMD64 here.
5601
5602 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5603
5604         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5605         JIT code.
5606
5607 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5608
5609         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5610         number of trampolines used in full-aot mode.
5611
5612         * aot-compiler.c: Add an ntrampolines option to set the number of 
5613         trampolines emitted in full-aot mode.
5614
5615 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5616
5617         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5618         a volatile load. Get rid of get_tempname (), llvm assigns names
5619         automatically.
5620
5621         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5622         builder function.
5623
5624         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5625         a value.
5626
5627         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5628         level 1.
5629
5630         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5631         to the same register as a fixed sreg2. Fixes #497271.
5632
5633         * iltests.il.in: Add a new test.
5634
5635 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5636
5637         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5638         stack, since pushes complicate exception handling.
5639
5640         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5641         the stack if they are passed using moves.
5642
5643         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5644
5645         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5646         when using llvm.
5647
5648         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5649         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5650         of FMOVE if it is an R4.
5651
5652 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5655
5656         * mini.h (LLVMCallInfo): New structure to store calling convention 
5657         information for the LLVM back end similar to the CallInfo structures in 
5658         the back-ends.
5659
5660         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5661         call information in a format usable by LLVM.
5662         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5663
5664         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5665         mono_llvm_emit_call () when compiling using LLVM.
5666
5667         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5668         comments to all functions. Fix memory leaks. Add a public init/cleanup
5669         function.
5670
5671         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5672
5673         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5674         mono_array_new_va () jit icall.
5675         
5676 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5677
5678         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5679         multiple machine description files to be specified.
5680         * mini-ops.h: fixes for cross-compilation.
5681
5682 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5683
5684         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5685         some porting work.
5686
5687 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5690         to prevent asserts in various passes. Fixes #497220.
5691
5692 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5695         a racy assert.
5696
5697         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5698         table to avoid duplicates.
5699
5700         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5701         
5702         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5703         option is used.
5704
5705 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5706
5707         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5708         is for method or field access.
5709
5710 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5713         a Value to stdout.
5714
5715         * mini-llvm.c (mono_llvm_emit_method): Use it.
5716         
5717         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5718         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5719         on volatile values.
5720
5721         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5722         synchronized methods.
5723
5724         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5725
5726         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5727
5728         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5729         OP_LOADI8_MEM.
5730
5731         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5732         allowing some options to be set dynamically.
5733
5734 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5735
5736         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5737         unconditional branch.
5738
5739         * mini.h (MonoTrampolineType): Add new trampoline type 
5740         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5741         compiled code.
5742
5743         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5744         function.
5745
5746         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5747         creation function.
5748
5749         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5750         is enabled. Instead, use the llvm vcall trampoline.
5751         
5752         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5753
5754         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5755         
5756         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5757         functions.
5758
5759         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5760         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5761
5762         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5763         OP_IA64_CSET opcode.
5764
5765         * mini.c: Fix a warning.
5766
5767         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5768         THROW to the appropriate llvm type.
5769
5770 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5771
5772         * mini.c (mini_method_compile): Add statistics for methods JITted
5773         with/without LLVM.
5774
5775 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5778         OP_IA64_CMP_<cond>_IMM opcodes.
5779
5780 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5781
5782         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5783         corlib exceptions.
5784
5785         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5786         correctly.
5787
5788         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5789         GENERICINST.
5790
5791 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5792
5793         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5794
5795 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5796
5797         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5798         support.
5799
5800         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5801         rgctx invoke trampolines for x86.
5802
5803         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5804         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5805         (mono_arch_get_vcall_slot): Simplify this.
5806
5807 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5810         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5811
5812 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5815         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5816
5817         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5818
5819         * liveness.c (visit_bb): Remove a needless assert.
5820
5821 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5824         full aot support to the arch specific code.
5825
5826         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5827
5828         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5829
5830         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5831         
5832         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5833         collect information about the delegate invoke impl trampolines.
5834
5835         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5836         to save trampolines during full-aot mode.
5837
5838         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5839         creation function which returns a trampoline which sets the rgctx
5840         argument.
5841         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5842         wrapper if possible.
5843         (mono_delegate_trampoline): Ditto.
5844
5845         * mini.c (mono_jit_runtime_invoke): Ditto.
5846
5847         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5848         
5849         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5850
5851         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5852         
5853 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5856         just setting the opcode to OP_NOP.
5857
5858 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * mini.c (mini_method_compile): Put the last change inside an 
5861         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5862         
5863         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5864         and extend live ranges to cover the whole method when using xdb.
5865
5866         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5867         do it in the trampolines.
5868
5869         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5870         needed.
5871
5872         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5873         
5874         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5875         call code in full-aot mode since IMT is disabled there.
5876         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5877         new JIT no longer has that restriction.
5878
5879         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5880
5881         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5882         a more compact format.
5883         (mono_aot_wrapper_name): New function to return a unique name for a
5884         wrapper method, also used by the AOT runtime.
5885
5886         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5887         aot-compiler.c.
5888
5889         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5890         when a ICollection<T> etc is encountered.
5891         (add_generic_instances): Process method arguments/locals too.
5892         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5893         trampoline names.
5894
5895         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5896         
5897 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5900
5901         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5902
5903         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5904         representing the result of the decomposition. Nullify instructions
5905         instead of setting them to OP_NOP since nops can't have registers
5906         set.
5907
5908 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5909
5910         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5911         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5912         info. Strip 'mapping symbols' on ARM.
5913
5914         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5915         
5916         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5917         this with the native genmdesc.
5918
5919 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5920
5921         * aot-runtime.c:  Fixing the MSVC build.
5922
5923         Code is contributed under MIT/X11 license.
5924
5925 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5926
5927         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5928         JITted code depends on it.
5929
5930 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5931
5932         * aot-compiler.c: Use new MonoGenericParam accessors.
5933
5934 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5935
5936         Reduce memory usage and improve correctness wrt MonoGenericParam
5937         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5938         handing.  Avoid allocating MonoGenericParams, but use the ones in
5939         the container itself.
5940
5941 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5942
5943         * tasklets.c: Return exceptions in the out argument.
5944
5945 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5948         opcode. Use pointer types in more places instead of casting them to 
5949         integers.
5950
5951         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5952         optimizations.
5953         (mono_llvm_optimize_method): New helper function to optimize a method.
5954
5955         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5956         widening code so it could be called from more places.
5957         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5958         code paths in the call opcodes.
5959
5960 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5961
5962         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5963
5964 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5965
5966         * dwarfwriter.c: Use _ to separate class name 
5967         components as gdb can't handle '.'. Represent reference variables
5968         as 'class <NAME>&'.
5969         
5970         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5971
5972         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5973         
5974         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5975
5976         * gc-test.cs: New file with GC stack marking tests.
5977         
5978         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5979         negative numbers for vfp.
5980
5981         * basic-float.cs: Add a test.
5982         
5983 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5984
5985         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5986
5987 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5988
5989         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5990         part of tasklet/continuation support.
5991
5992 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5993
5994         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5995         amd64 opcodes inside an ifdef.
5996
5997         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5998         of complex types.
5999         
6000         * dwarfwriter.c (emit_type): Emit the class info for classes.
6001
6002 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6005
6006         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6007
6008         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6009
6010         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6011
6012 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6013
6014         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6015
6016         * mini-llvm.c: Update comments.
6017
6018         * mini.h (COMPILE_LLVM): New macro.
6019
6020         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6021
6022         * ssa.c (mono_ssa_compute): Ditto.
6023         
6024         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6025         the unwind ops from a DWARF FDE.
6026
6027         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6028         methods by extracting the dwarf unwind ops from the unwind info generated
6029         by LLVM.
6030         
6031         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6032         calls.
6033
6034         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6035         addressing modes.
6036
6037 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * Makefile.am (llvm_sources): Enable this.
6040
6041         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6042         failing back to the JIT if something cannot be handled.
6043
6044         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6045         compiling with LLVM.
6046
6047         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6048         compiling with LLVM.
6049
6050         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6051         compiling with LLVM.
6052
6053         * mini-ops.h: Add a few opcodes needed by LLVM.
6054
6055         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6056         has no unwind info.
6057
6058         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6059         backend.
6060
6061         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6062
6063         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6064
6065 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6066
6067         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6068         ridiculously large methods.
6069
6070 2009-03-31  Martin Baulig  <martin@ximian.com>
6071
6072         * debug-debugger.c (debugger_remove_breakpoint): Call
6073         mono_debugger_remove_class_init_callback ().
6074
6075 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6078         right before emitting code, not at the start.
6079
6080         * mini.c (mono_postprocess_patches): Extract this into a separate function
6081         from mono_codegen ().
6082
6083         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6084         byref types correctly.
6085
6086 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6087
6088         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6089         by the last change.
6090
6091 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6092
6093         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6094         indirect calls, this avoids problems where get_vcall_slot () would get
6095         confused by the native code for the instruction preceeding the call.
6096         (mono_arch_get_vcall_slot): Simplify this.
6097         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6098
6099         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6100         register allocator now seems to depend on them instead of the data in
6101         cpu-<ARCH>.md.
6102
6103         * mini.c (mini_method_compile): Throw the correct type of exception if
6104         mono_method_get_header () fails because of a loading error.
6105
6106 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6107
6108         * mini.c (mini_method_compile): Clear the loader error if the method
6109         header cannot be decoded.
6110
6111         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6112         interface methods on proxies correctly.
6113
6114         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6115         this argument for vtype methods. Add precise liveness info for arguments.
6116
6117         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6118         LIVERANGE_START/END opcodes.
6119
6120         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6121         for arguments and values in registers.
6122
6123 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6126         return a valuetype. Fixes #487518.
6127
6128         * iltests.il: Add a test.
6129         
6130         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6131
6132         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6133         closed over a null reference correctly.
6134
6135 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6138
6139 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6140
6141         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6142         allocated to the same registers as fixed sregs.
6143
6144 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6145
6146         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6147         ATOMIC_CAS_IMM ops.
6148
6149         * method-to-ir.c: Handle more cases for
6150         Interlocked.CompareExchange.
6151
6152         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6153         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6154         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6155
6156 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6157
6158         * aot-runtime.c (decode_method_ref): Fix a warning.
6159
6160         * unwind.c (mono_unwind_frame): Ditto.  
6161
6162 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6165         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6166
6167         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6168         fix the handling of large values in the ALU_PC_G0_NC relocation.
6169
6170 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6173
6174 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6175
6176         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6177         ops.
6178
6179 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6180
6181         * method-to-ir.c: MINI_OP3 needs a comma.
6182
6183         * method-to-ir.c, mini.h, mini.c: Remove
6184         mono_init_op_sreg_counts ().
6185
6186 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6189         OP_JMP.
6190         
6191         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6192         assertion.
6193
6194         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6195
6196         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6197         code somewhat.
6198
6199 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6200
6201         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6202         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6203         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6204         operations.
6205
6206 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * driver.c: Change location of gc_wrapper.h.
6209
6210         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6211         inside finally clauses correctly. Fixes #485721.
6212
6213         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6214         after the change above.
6215
6216         * exceptions.cs: Add a test.
6217         
6218 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6221
6222         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6223         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6224         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6225
6226         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6227         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6228
6229 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6230
6231         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6232         Simplify logic for ensure_method_is_allowed_to_call_method. 
6233         Handle wrappers on callers.
6234
6235 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6236
6237         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6238         them don't run yet.
6239
6240         * basic-simd.cs: Fix the names of some test methods.
6241
6242 2009-03-18  Geoff Norton  <gnorton@novell.com>
6243
6244         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6245
6246 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6247
6248         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6249
6250 2009-03-17  Jb Evain  <jbevain@novell.com>
6251
6252         * driver.c: remove now uneeded call to mono_gc_base_init before
6253         mono_profiler_load.
6254
6255 2009-03-17  Jb Evain  <jbevain@novell.com>
6256
6257         * dwarfwriter.c (token_handler): handle more cases.
6258
6259 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6260
6261         * method-to-ir.c: Remove more dead code (that was required only
6262         because of method_is_safe). Fix compiler warnings.
6263
6264 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6265
6266         * method-to-ir.c: Remove unneeded/useless method_is_safe
6267         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6268
6269 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6270
6271         * mini.c (mini_method_compile): Print the method been compiled with
6272         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6273         for people not familiar with the runtime.
6274
6275 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6278         a managed object which is later put into a GList. Return its class instead.
6279
6280         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6281         stack slots when using sgen.
6282
6283 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6286
6287 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6288
6289         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6290         > so it works on the first vreg as well.
6291
6292 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6295         trigger randomly.
6296
6297         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6298         
6299         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6300         implement GArray.
6301
6302 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6305         native->IL offset mapping.
6306
6307 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6310
6311         * basic.cs: Add a test.
6312
6313 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6314
6315         * mini-x86.c (mono_arch_output_basic_block): Use different
6316         registers in case the ones we want to overwrite are used by the
6317         other operand.  Fixes regression in #480807.
6318
6319 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6322
6323         * dwarfwriter.c (emit_line_number_info): The line number info for
6324         IL code was off by one. Fix that.
6325
6326         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6327         stack.
6328
6329 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6330
6331         Contributed under the terms of the MIT/X11 license by Steven
6332         Munroe <munroesj@us.ibm.com>.
6333
6334         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6335         Fixes #483462.
6336
6337 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6338
6339         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6340         as well.
6341
6342 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6343
6344         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6345         the delegate ctor handling code. Fixes #482638.
6346         
6347         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6348         #481458.
6349
6350         * iltests.il.in: Add a test.
6351         
6352         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6353         mini-posix.c.
6354
6355 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6356
6357         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6358         is shared generic code, return the trampoline, even if the method
6359         has already been compiled.  Fixes #479763.
6360
6361         * mini.c, mini.h: New function
6362         mono_jit_find_compiled_method_with_jit_info() which is the same as
6363         mono_jit_find_compiled_method() but also returns the jit info.
6364
6365 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6366
6367         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6368         for methods which actually have one.  For all other methods, make
6369         sure the this argument var is live the whole method.
6370
6371         * mini.c (mini_method_compile): Every shared method has a
6372         this/vtable/mrgctx info.  Fixes #480807.
6373
6374 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6375
6376         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6377         generic/imt thunks where some entries branch through the vtable,
6378         while other entries branch directly.
6379
6380 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6381
6382         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6383
6384         * mini-windows.c: Ditto.
6385         
6386         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6387         ctors.
6388
6389 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6392         down an assert.
6393
6394 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6395
6396         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6397         #481403.
6398
6399 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6400
6401         * exceptions-x86.c: Include debug-mini.h - fixes build.
6402
6403 2009-03-04  Martin Baulig  <martin@ximian.com>
6404
6405         * debug-mini.c: Clean up the exception API and add documentation.
6406         (mono_debugger_handle_exception): New public method; this is
6407         called when throwing an exception or encountering an unhandled one.
6408         (mono_debugger_call_exception_handler): Formerly known as
6409         mono_debugger_handle_exception(); this is used to tell the
6410         debugger that we're about to invoke an exception handler.
6411
6412 2009-03-04  Martin Baulig  <martin@ximian.com>
6413
6414         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6415         ../metadata/mono-debug-debugger.c; save and reset exception state.
6416
6417 2009-03-02  Martin Baulig  <martin@ximian.com>
6418
6419         * debug-mini.c: Moved the debugger exception handling here from
6420         ../metadata/mono-debug-debugger.c.
6421
6422         * debug-mini.h
6423         (MonoDebuggerExceptionAction): New exception typedef.
6424
6425         * debug-mini.c
6426         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6427
6428         * exceptions-amd64.c
6429         (mono_amd64_throw_exception): Use the new debugger exception
6430         handling code.
6431
6432         * mini-exceptions.c
6433         (mono_handle_exception_internal): Don't call
6434         mono_debugger_unhandled_exception() here.
6435
6436 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6437
6438         * mini.c aot-compiler.c: Update after the changes to 
6439         mono_marshal_get_runtime_invoke ().
6440
6441         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6442         Virtual generic methods might not have method->slot set, work around
6443         that.
6444
6445         * generics.cs: Add a test.
6446
6447 2009-03-02  Geoff Norton  <gnorton@novell.com>
6448
6449         * mini.c:
6450         * driver.c: Allow signal chaining of SIGFPE as well.
6451
6452 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6455         this since it now receives the method not its generic context in the
6456         IMT reg.
6457
6458         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6459         generic/imt thunks where some entries branch through the vtable, while
6460         other entries branch directly.
6461
6462         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6463
6464         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6465         support for interface methods as well.
6466
6467         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6468         using the normal IMT thunks.
6469
6470         generics.cs: Add new tests.
6471         
6472         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6473         the generic inst to the generic imt thunks. This fixes AOT support, 
6474         improves consistency with the normal IMT thunks, and makes it easier to
6475         add support for interface generic virtual methods later.
6476
6477         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6478         
6479 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * driver.c (mono_set_signal_chaining): New public API function to enable
6482         signal chaining on POSIX platforms.
6483
6484         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6485         (si@lindenlab.com) to implement signal chaining. The original patch was
6486         contributed under the MIT X/11 license:
6487         https://bugzilla.novell.com/show_bug.cgi?id=318894
6488
6489 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6492         too until it can be made to run on amd64.
6493
6494 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6495
6496         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6497         to  get_generic_context_from_code () + get_call_info () if possible.
6498
6499 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6502         suspend-on-sigsegv functionality.
6503
6504         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6505         to suspend when a native SIGSEGV is received. This is useful for debugging
6506         crashes which don't happen under gdb, since a live process contains more
6507         information than a core file.
6508
6509         * mini-exceptions.c (mono_print_thread_dump): Use 
6510         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6511
6512         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6513
6514         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6515         
6516         * basic-float.cs: Disable the tests which currently fail on amd64.
6517
6518         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6519         value to mono_arch_patch_callsite () to fix crashes.
6520         
6521         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6522
6523 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6526         nop code by patching the call address to point to the nullified class init
6527         trampoline, as the former does not seem to be safe on SMP machines.
6528
6529 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6530
6531         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6532         they were wrong.
6533
6534 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * basic-float.cs basic-calls.cs: Fix warnings.
6537
6538 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6539
6540         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6541         correct frame pointer in the LMF.  Should fix #478394.
6542
6543 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6544
6545         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6546
6547         * image-writer.c: Make the binary writer less verbose.
6548
6549 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6550
6551         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6552         are called from runtime invoke wrappers.
6553
6554 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * cpu-ppc.md (store_memindex): Increase the size of this.
6557
6558 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6561
6562         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6563
6564         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6565         OP_LCONV_TO_R_UN.
6566
6567         Last fix for of #467201.
6568
6569
6570 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6571
6572         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6573
6574         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6575         and long_conv_to_r8_2:
6576
6577         Fixed part of #467201.
6578
6579 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6582
6583         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6584         conversion to 32 bits.
6585
6586         * cpu-x86.md: Increase the size of int_conv_to_r4.
6587
6588         * basic-float.cs: Add a test for this.
6589
6590         Fixed part of #467201.
6591
6592 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6593
6594         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6595
6596         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6597         conversion to 64 bits.
6598
6599         * basic-float.cs: Add a test for this.
6600
6601         Fixed part of #467201.
6602
6603 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6604
6605         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6606
6607         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6608         This behavior is compatible with MS.
6609
6610         * iltest.il.in: Add a test for this.
6611
6612         Fixed part of #467201.
6613
6614 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6615
6616         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6617
6618         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6619         change the precision of the value.
6620
6621         * cpu-x86.md: Define len for float_conv_to_r4.
6622
6623         * basic-float.cs: Add a test for this.
6624
6625         Fixed part of #467201.
6626
6627 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6628
6629         * mini.c: Adjust locking order to the new semantics where the loader lock
6630         comes first.
6631
6632 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6633
6634         * aot-runtime.c:
6635         * mini-amd64.c:
6636         * mini-arm.c:
6637         * mini-ia64.c:
6638         * mini-mips.c:
6639         * mini-ppc.c:
6640         * mini-sparc.c:
6641         * mini-trampolines.c:
6642         * mini-x86.c:
6643         * mini.c:
6644         * tramp-alpha.c:
6645         * tramp-amd64.c:
6646         * tramp-arm.c:
6647         * tramp-hppa.c:
6648         * tramp-ia64.c:
6649         * tramp-mips.c:
6650         * tramp-ppc.c:
6651         * tramp-s390.c:
6652         * tramp-s390x.c:
6653         * tramp-sparc.c:
6654         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6655
6656 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6659         as it is incorrect.
6660
6661 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6664         for cctors if needed.
6665
6666 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6667
6668         * mini-ppc.c: Fix build on Darwin.
6669
6670 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6671
6672         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6673         version instead of 3 as valgrind doesn't like version 3.
6674
6675         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6676
6677         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6678         usable for hashing methods.
6679         (emit_extra_methods): Use the new hash to avoid putting every method in the
6680         same hash bucket.
6681
6682         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6683
6684         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6685         whenever a method ref could match a method.
6686         
6687         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6688         test to fail.
6689         
6690         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6691         methods refs.
6692
6693         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6694
6695         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6696         the encoding buffer.
6697
6698         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6699         mono_method_get_header () on inflated methods as an optimization.
6700
6701 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * ssa.c (fold_ins): Fix another crash if the instruction following the
6704         switch was optimized away.
6705
6706 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6707
6708         Contributed under the terms of the MIT/X11 license by Steven
6709         Munroe <munroesj@us.ibm.com>.
6710
6711         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6712
6713 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6714
6715         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6716         around the mono_domain_alloc calls, it is now done by the functions
6717         themselves.
6718
6719         * aot-compiler.c (compile_method): Only add wrappers referenced by
6720         the method if compiling with full AOT.
6721         (mono_compile_assembly): Error out if --aot=full is specified on
6722         a platform where it is not supported.
6723
6724         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6725         on ARM too.
6726
6727         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6728         AOT support.
6729
6730         * aot-runtime.c (load_named_code): Handle 
6731         mono_arm_throw_exception_by_token.
6732
6733         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6734
6735         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6736         unaligned.
6737
6738         * Makefile.am (fullaotcheck): Exit if a test fails.
6739
6740         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6741         on ARM.
6742         (mono_compile_assembly): Handle the assembler failing.
6743
6744         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6745         accepting subsections of .bss.
6746
6747         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6748         was optimized away.
6749
6750         * aot-compiler.c: Remove some unused includes.
6751         
6752         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6753         now in MonoImageWriter.
6754
6755         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6756         code sequence which matches a non-virtual call. Fixes #472654.
6757
6758 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6761         xdebug code.
6762         
6763         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6764         use the image/dwarf writers directly.
6765
6766         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6767         field.
6768
6769         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6770         MonoDwarfWriter.
6771
6772         * image-writer.h: Fix some typos.
6773
6774         * dwarfwriter.h dwarfwriter.c: New files.
6775         
6776         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6777         separate module.
6778
6779         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6780         argument to return unwind info.
6781
6782         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6783
6784         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6785         
6786         * aot-runtime.c (decode_method_ref): Add a case for 
6787         MONO_AOT_METHODREF_WRAPPER_NAME.
6788
6789         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6790         for AOT.
6791
6792         * aot-compiler.c (encode_method_ref): Use the new constants.
6793
6794         * aot-runtime.c (decode_method_ref): Ditto.
6795
6796         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6797         be compiled, not the icall itself.
6798
6799 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6802         using decode_method_ref ().
6803
6804         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6805         convert it to an in32. Fixes #475859.
6806
6807         * arrays.cs: Add a test.
6808
6809 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6810
6811         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6812         OP_LCONV_TO_U2.
6813
6814         * basic-long.cs: Add a test.
6815
6816 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6817
6818         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6819         remove the frame pointer in leaf methods which don't receive any
6820         arguments, don't throw exceptions and don't do dynamic stack
6821         allocations.
6822
6823 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6826         the fail_tramp changes. Hopefully fixes #475132.
6827
6828 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6829
6830         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6831         instead of mono_metadata_signature_dup_full.
6832
6833 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6836         for processing jump tables. Fixes #473787.
6837
6838 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6839
6840         * mini-generic-sharing.c: mini_method_get_context() just calls
6841         mono_method_get_context_general() now.
6842
6843         * mini.c, mini.h: Moved get_object_generic_inst(),
6844         construct_object_context_for_method() and
6845         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6846
6847 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6850         basic block fell through to its successor bblock without a branch. Fixes
6851         #474718.
6852
6853         * iltests.il.in: Add a test.
6854         
6855         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6856         (can_encode_patch): We can now handle arrays of generic parameters and
6857         array methods.
6858
6859         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6860
6861         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6862         the AOT file to avoid some #ifdefs in aot-runtime.c
6863
6864         * mini.h: Bump AOT file format version.
6865
6866 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6867
6868         * Makefile.am (fullaotcheck): Make this run the tests.
6869
6870         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6871
6872 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6873
6874         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6875         individually.  Fixes #473482.
6876
6877 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6878
6879         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6880
6881 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6882
6883         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6884         (mono_compile_assembly): Hush compile warnings about
6885         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6886         code path.
6887
6888 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6891
6892         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6893
6894         * aot-compiler.c: Fix arm support.
6895
6896         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6897         img_writer_emit_unset_mode () function.
6898
6899         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6900         (mono_unwind_get_dwarf_pc_reg): Ditto.
6901
6902         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6903         Move almost all platform specific code to a set of arch_ functions, 
6904         and document them to ease porting.
6905         
6906         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6907
6908         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6909
6910         * aot-compiler.c: Extract the image writing functionality into a separate
6911         module to reduce the size of this file.
6912
6913 2009-02-09  Geoff Norton  <gnorton@novell.com>
6914
6915         * mini-s390.c: Fix the signature of emit_sig_cookie.
6916
6917 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6918
6919         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6920
6921         * aot-runtime.c (is_shared_got_patch): Ditto.
6922
6923         * aot-runtime.c (load_named_code): Cope with the fact that 
6924         decode_got_entry () won't decode the patch fully if its corresponding got
6925         entry is already filled.
6926         
6927         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6928         Initialize *ji.
6929         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6930
6931         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6932         as the moving pointer instead of 'buf' for consistency with the rest of the
6933         codebase.
6934         (mono_arch_create_monitor_exit_trampoline): Ditto.
6935
6936         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6937         generic_class_init trampolines.
6938         (add_generic_class): Extract some code from add_generic_instances () into a
6939         separate function so it can be called from other places too.
6940         (compile_method): Call add_generic_class () for the classes of inflated methods
6941         referenced by the method.
6942         (can_encode_patch): Allow references to generic parameters.
6943
6944         * aot-runtime.c: Add support the patches required by the new trampolines.
6945         
6946         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6947         support.
6948
6949         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6950         full-aot support.
6951
6952         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6953         this from get_throw_pending_exception, make the signature full aot compatible.
6954
6955         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6956
6957         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6958
6959         * exceptions.cs: Add a test.
6960
6961 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6964         use the DWARF_DATA_ALIGN constant instead.
6965
6966         * exception-<ARCH>.c: Update after the above change.
6967
6968         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6969         dwarf unwinder.
6970
6971         * mini-arm.c: Enable the dwarf unwinder.
6972
6973         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6974         instead of mono_class_setup_vtable ().
6975
6976 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6977
6978         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6979         dwarf unwinder.
6980
6981         * mini-x86.h: Enable the dwarf unwinder.
6982
6983 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6984
6985         Fix mcs/tests/test-7.cs
6986         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6987         2009-02-03.
6988
6989 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * mini.c (print_jit_stats): Remove some unused statistics.
6992
6993 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6996
6997 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6998
6999         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7000         the method we get from mono_object_get_virtual_method() because
7001         that function does it properly, now.
7002
7003 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7006         opcodes. Fixes #472775.
7007
7008 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7009
7010         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7011         fact that mono_find_jit_info() sometimes returns the context
7012         corresponding to the jit info in new_ctx.  Fixes #472600.
7013
7014 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7015
7016         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7017         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7018         klass->enum_basetype directly.
7019
7020         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7021         enum subtypes.
7022
7023         * unwind.c: Avoid 0 sized arrays.
7024
7025 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7028         size on systems with 64k pages. Fixes #471389.
7029
7030 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7031
7032         Contributed under the terms of the MIT/X11 license by Steven
7033         Munroe <munroesj@us.ibm.com>.
7034
7035         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7036         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7037         necessary.
7038
7039 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7040
7041         Contributed under the terms of the MIT/X11 license by Steven
7042         Munroe <munroesj@us.ibm.com>.
7043
7044         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7045         comparison fix.
7046
7047         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7048         The trampoline can be longer on PPC64.
7049
7050 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7051
7052         Contributed under the terms of the MIT/X11 license by Steven
7053         Munroe <munroesj@us.ibm.com>.
7054
7055         * mini-ppc.c: Compiler warning fixes and trivial code
7056         simplifications.
7057
7058 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7061         ins->dreg which could be a hardware register, not a vreg.
7062
7063         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7064         
7065         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7066         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7067
7068         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7069         
7070         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7071         ->dreg, that is not the vreg we are looking for.
7072
7073         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7074
7075         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7076         LIVERANGE_END.
7077
7078         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7079         strange crashes.
7080
7081 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7084
7085         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7086         the line diff is 0.
7087
7088         * aot-compiler.c: Add xdebug support on x86.
7089
7090         * unwind.c: Add x86 support.
7091         
7092         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7093         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7094
7095         * mini.c (mini_method_compile): Ditto.
7096         
7097         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7098         the variable index.
7099
7100         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7101         which mimic .push_section/.pop_section in GAS.
7102         
7103         * aot-compiler.c: Emit precise live range information for variables.
7104
7105         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7106
7107         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7108         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7109         them.
7110
7111         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7112         the live ranges of variables.
7113
7114         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7115         of the variable in terms of native offsets.
7116
7117 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7118
7119         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7120         
7121 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7122
7123         Contributed under the terms of the MIT/X11 license by Steven
7124         Munroe <munroesj@us.ibm.com>.
7125
7126         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7127         order (offset then base reg) for ppc_load_multiple_regs.
7128         (emit_save_saved_regs) Correct operand order for
7129         ppc_store_multiple_regs.
7130         (mono_arch_get_call_filter): Correct operand order for
7131         ppc_load_multiple_regs.
7132
7133         * mini-ppc.c (emit_memcpy): Fix operand order for
7134         ppc_load_reg_update and ppc_store_reg_update.
7135         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7136         (mono_arch_emit_epilog): Correct operand order for
7137         ppc_load_multiple_regs.
7138
7139         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7140         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7141
7142 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7143
7144         * cpu-ppc64.md: Fixed storer4_memindex length.
7145
7146 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7147
7148         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7149         line number info.
7150         
7151         * aot-compiler.c (emit_line_number_info): Optimize this.
7152
7153 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7156         
7157         * aot-compiler.c: Add debug info for methods without debug info by
7158         emitting an IL file and having the line number info referencing that file.
7159
7160         * aot-compiler.c: Optimize the size of the generated line number info.
7161
7162         * aot-compiler.c: Emit line number info in xdebug mode.
7163
7164         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7165         million arguments.
7166
7167 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7168
7169         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7170
7171         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7172         is used.
7173
7174 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7175
7176         * basic-calls.cs: Test for the weird crash found on arm.
7177         
7178 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7179
7180         * cpu-arm.md: Increase the size of storer8_membase_reg and
7181         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7182
7183         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7184         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7185         reg to LR otherwise we'll be loading/storing from just the offset.
7186
7187 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7188
7189         Question: if we are storing gint32's inside the "*native_offset",
7190         should we change the signature to "gint32 *native_offset" to
7191         ensure that we do not have type definition problems?
7192         
7193         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7194         an int * as this is what the other function expects, causes
7195         problems with Freescale's compiler that defined int32_t to be a
7196         long and makes int incompatible 
7197
7198 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7199
7200         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7201         filename conflict with bjam.
7202
7203 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7204
7205         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7206         as it might use decomposed ops.
7207
7208 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7211
7212         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7213         is defined.
7214
7215         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7216
7217         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7218         offsets.
7219
7220         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7221         way registers are stored in MonoContext on arm.
7222
7223         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7224         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7225
7226         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7227
7228         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7229
7230         * mini.c (mini_init): Register mono_isfinite.
7231
7232         * jit-icalls.c (mono_isfinite): New jit icall.
7233
7234         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7235         
7236         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7237         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7238         the parent frame.
7239
7240 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7243         separate frame and stack pointers, so we must use FP to find the register
7244         spill area.
7245         The FP reg is retrieved from the MonoContext::regs array.
7246
7247 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7248
7249         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7250         as FPA requires it.
7251
7252 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7253
7254         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7255         return R4 and R8 when not running under softfloat.
7256
7257         Fixes basic-calls.exe
7258
7259 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * mini-arm.c: Implement some overflow opcodes.
7262
7263 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7264
7265         * ssa.c: handle another alloca.h
7266
7267         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7268         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7269         MONO_ARCH_USE_SIGACTION. 
7270
7271         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7272         capability defines.
7273
7274         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7275
7276         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7277         PPC targets as sigaction does not exist on all platforms, define
7278         this on a per-platform basis.
7279
7280         Instead of erroring out if the platform is not defined, include
7281         mini-ppc-os.h, and expect that the OS specific setting provides
7282         the required information.   
7283
7284 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * aot-compiler.c: Fix --enable-minimal=aot.
7287
7288 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7289
7290         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7291         previous change.
7292
7293 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * exceptions-arm.c: Fix warnings.
7296
7297         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7298         ARM.
7299
7300         * mini-x86.c: Fix --enable-minimal=jit build.
7301
7302         * mini.c: Really fix --enable-minimal=jit build.
7303         
7304         * mini.c (construct_object_context_for_method): Move this outside
7305         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7306
7307         "Backported" of r124984 from 2.0 branch.
7308         
7309         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7310
7311         "Backport" of r124977 + r124978 from 2.0 branch.
7312         
7313         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7314         to avoid calling mono_exception_from_token () from the throw trampoline.
7315         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7316         for throwing corlib exceptions, this fixes full-aot support for corlib
7317         exceptions.
7318
7319         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7320
7321 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7322
7323         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7324         part of the changes to split the code in mini into operating
7325         system specific files.
7326
7327         This patch was done by copying mini.c to the respective files to
7328         preserve SVN history.
7329
7330 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7331
7332         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7333
7334 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7335
7336         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7337         remoting-invoke-with-check wrappers of shared methods.
7338
7339         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7340
7341 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7342
7343         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7344         optimization if the top of stack is the last instruction in the
7345         bblock.  Otherwise it might have been used after its definition.
7346         Fixes #469742.
7347
7348 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7351         method as well when get_vcall_slot () fails to match a code sequence.
7352
7353         * mini-arm.c: Fix the android build, which doesn't have
7354         __aeabi_read_tp.
7355
7356 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7359         the s390x build.
7360
7361 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7362
7363         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7364
7365 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7366
7367         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7368         and put its id into jinfo->used_regs. This is only used on amd64,
7369         which is currently the only platform generating unwind info.
7370
7371         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7372         the dwarf unwinder. This is required to correctly handle async exceptions
7373         like thread abort and stack overflows, which can happen while a method
7374         is in the middle of its prolog or epilog.
7375         
7376         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7377         the unwind info belonging to an AOTed method.
7378
7379         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7380         into cfg->unwind_ops.
7381         
7382         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7383
7384         * mini.c (mini_init): Call mono_unwind_init ().
7385         (mini_cleanup): Call mono_unwind_cleanup ().
7386
7387         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7388         unwind info to be shared between methods.
7389
7390         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7391         saved in the LMF.
7392
7393         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7394         get_throw_pending_exception () to avoid initialization races.
7395
7396         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7397         mono_arch_exceptions_init () function.
7398
7399         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7400
7401 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7402
7403         * mini.c (mono_get_domain_intrinsic): New helper function.
7404         (mono_get_thread_intrinsic): Ditto.
7405
7406         * mini-arm.c mini-ia64.c: Use the new helper functions.
7407         
7408         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7409         the last constrained_call change, since it is needed in the non-AOT
7410         case as well.
7411
7412         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7413         
7414         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7415         mono_get_lmf_addr () on arm eabi linux.
7416
7417 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7420         code sequence which matches a non-virtual call.
7421
7422 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7423
7424         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7425         stack pointer (r1).
7426
7427 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7430         runtime-invoke wrappers, since they are also shared based on signature.
7431
7432 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7433
7434         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7435         info from the (correct) context.
7436
7437 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7440         
7441         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7442         using dwarf unwinding info. Not yet used.
7443
7444         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7445
7446 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7447
7448         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7449         descriptors.
7450
7451         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7452         special case and handle mono_arch_delegate_invoke_impl() returning
7453         function descriptors.
7454
7455         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7456         trampolines return function descriptors, too.
7457
7458 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7461         out_of_line optimization.
7462
7463 2009-01-21  Martin Baulig  <martin@ximian.com>
7464
7465         * mini.h
7466         (MonoCompile): Added `disable_deadce_vars' to disable removing
7467         unused variables.
7468
7469         * mini.c
7470         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7471         inside the debugger.
7472
7473         * liveness.c (mono_analyze_liveness): Don't remove any unused
7474         variables if `cfg->disable_deadce_vars' is set.
7475
7476 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7477
7478         * method-to-ir.c: Only apply exception constructor optimization if
7479         the the method actually belongs to an exception class.  Fixes
7480         #467456.
7481
7482 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7483
7484         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7485         change inside a #ifdef __mono_ppc64__.
7486
7487         * aot-compiler.c (compile_method): Remove the previous limitation.
7488
7489         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7490         on type variables in AOTed code.
7491         
7492         * aot-compiler.c (compile_method): Skip generic methods having type 
7493         constraints on their generic parameters.
7494
7495         * aot-compiler.c (compile_method): Check for methods which cannot be
7496         encoded inside RGCTX_FETCH patches as well.
7497
7498         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7499         build.
7500
7501 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7502
7503         * method-to-ir.c: Force the vtable variable in shared generic code
7504         for the case that they might show up on a stack trace where they
7505         are needed.
7506
7507         * mini-exceptions.c: Save and use generic sharing info as well as
7508         IP in stack traces to resolve shared generic instantiations.
7509
7510 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7511
7512         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7513         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7514
7515 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7516
7517         * method-to-ir.c: Do generic sharing for array constructors.
7518
7519 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7520
7521         * mini-exceptions.c (mono_print_thread_dump): Add information
7522         about the thread state using wapi_current_thread_desc.
7523
7524 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7525
7526         * basic-simd.cs: Tests for the new constructors. 
7527
7528 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7529
7530         * mini-ops.h: Added OP_EXPAND_*
7531
7532         * cpu-x86.md: Same.
7533
7534         * mini-x86.c (mono_arch_output_basic_block): Same.
7535         
7536         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7537
7538 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7539
7540         * iltests.il.in: Add a test for #467385.
7541
7542 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7543
7544         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7545         thread been cleaned up is not the same currently in execution.
7546
7547         Fixes appdomain-unload crashes on windows, osx and linux variants
7548         without the __thread keyword.
7549
7550 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7553         (koush@koushikdutta.com). Implement this for android.
7554
7555         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7556         begins with a digit.
7557
7558         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7559         mono_marshal_get_write_barrier ().
7560
7561 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7562
7563         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7564         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7565         that pass them on a register pair.
7566
7567         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7568         test was crashing due to that.
7569
7570 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7571
7572         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7573         trampoline code. Include ucontext.h only if available.
7574
7575 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7576
7577         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7578         and doesn't check whether it's sharable, like it was before
7579         removing the shared generics hash.  This brings IronPython
7580         performance back to what it was before that change.
7581
7582 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7583
7584         * method-to-ir.c: Handle delegate invocation optimization earlier,
7585         otherwise it would be handled (much more slowly) by the
7586         final/sealed optimization.
7587
7588 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7591         domain is not set. Fixes #465864.
7592
7593 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7594
7595         * method-to-ir.c: Don't stop sharing of generic methods with catch
7596         clauses - we already handle those.
7597
7598 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7599
7600         * mini.c, mini.h: lookup_generic_method() is now
7601         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7602         making the shared_generics_hash obsolete.
7603
7604 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7605
7606         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7607         use the red zone.  Make room on the stack first and then use it,
7608         not the other way around.
7609
7610 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * mini.c (mini_init): Call mono_xdebug_init ().
7613
7614         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7615
7616 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7617
7618         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7619
7620         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7621         trampolines.
7622
7623         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7624         debug+unwind info for trampolines.
7625
7626         * mini.c (mono_create_unwind_op): New helper function.
7627
7628         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7629
7630 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * aot-compiler.c: Fix the build.
7633
7634 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7635
7636         * Makefile.am: Update dtrace-prelink.sh location.
7637
7638 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7641         optimization. Fixes #464520.
7642
7643 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7644
7645         * mini-amd64.c : Adding code to save/restore non-volatile registers
7646            on Winx64.
7647
7648         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7649           registers on Winx64.
7650
7651         Contributed under MIT/X11 license.
7652
7653 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7656         __GNUC_MINOR__ which can break when the major version changes.
7657
7658 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7661
7662 2009-01-07  Geoff Norton  <gnorton@novell.com>
7663
7664         * helpers.c:  Allow mono -v -v -v to work on darwin.
7665
7666 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7667
7668         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7669           pattern. 
7670
7671         Contributed under MIT/X11 license.
7672
7673 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7676         instead of directly accessing type->data.klass. Fixes #462016.
7677         (mono_allocate_stack_slots_full): Ditto.
7678
7679         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7680         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7681
7682         * aot-compiler.c (emit_plt): Fix ARM build.
7683
7684 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7685
7686         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7687         
7688         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7689         change.
7690
7691         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7692         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7693         #463357.
7694
7695         * iltests.il.in: Add a regression test.
7696
7697 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7698
7699         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7700
7701 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7702
7703         * basic-simd.cs: Add a regression test for #462457.
7704
7705 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7706
7707         * mini-ops.h: Add a definition of XPHI.
7708
7709         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7710
7711         * ssa.c (op_phi_to_move): Handle XPHI.
7712
7713         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7714
7715         Fixes #462457
7716
7717 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7718
7719         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7720
7721 2008-12-31  Geoff Norton  <gnorton@novell.com>
7722
7723         * mini-ppc.c: The prolog size allocated can be too small for darwin
7724         ppc32 under certain circumstances.  Also fix a small logic bug.
7725
7726 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7729         while loading AOT methods.
7730
7731         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7732         since only the former is nulled out after a successful cast. This prevents
7733         crashes with rethrown exceptions when using --debug=casts.
7734
7735 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7736
7737         * mini.h: New macro for checking whether a method is final,
7738         i.e. whether the method or its class is marked final.
7739
7740         * method-to-ir.c: Use the new macro for all final-checks
7741         consistently.  Fixes the crash in the System.ServiceModel tests.
7742
7743 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7744
7745         * mini-exceptions.c (get_exception_catch_class): Corrected another
7746         overly strict assertion.
7747
7748 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7749
7750         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7751         Clobbering it is not allowed because the caller might use it as
7752         the vtable register in the interface call.
7753
7754 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7755
7756         * mini-exceptions.c (get_exception_catch_class): Corrected an
7757         overly strict assertion.
7758
7759 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7760         
7761         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7762
7763         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7764
7765         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7766
7767         * cpu-mips.md: correct lengths for certain long_ opcodes.
7768
7769         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7770
7771         * 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().
7772         
7773 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7774
7775         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7776         
7777 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7778         
7779         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7780         
7781 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7782
7783         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7784         next basic block.
7785         
7786 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7787
7788         * 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
7789
7790         * 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)
7791         
7792 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7793         
7794         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7795         
7796 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7799         gshared code. Fixes #458947.
7800
7801         * generics.cs: Add a test.
7802
7803 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7804         
7805         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7806         
7807         * mini-mips.c: first pass n32 code generation.
7808
7809         * mini-mips.h: datatypes and defines for n32 support.
7810
7811         * exceptions-mips.c: first pass n32 code generation.
7812         
7813         * tramp-mips.c: first pass n32 code generation.
7814         
7815         * cpu-mips.md: add long_ opcodes.
7816         
7817 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7818
7819         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7820
7821         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7822         
7823         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7824         
7825         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7826
7827         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7828
7829         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7830
7831         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7832
7833         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7834
7835         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7836
7837 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7838
7839         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7840
7841 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7842
7843         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7844
7845 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7846
7847         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7848         descriptors for helper functions directly in front of the code.
7849
7850 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7851
7852         * method-to-ir.c: Removed an unnecessary assertion.
7853
7854 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7855
7856         * method-to-ir.c: Merge SGEN changes from the old JIT.
7857
7858 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * driver.c (compile_all_methods_thread_main): Handle failure of
7861         mono_get_method ().
7862
7863 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7864
7865         * mini-ppc.c: Merged with mini-ppc64.c.
7866
7867         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7868
7869         * Makefile.am: Use the same sources for PPC and PPC64.
7870
7871         * mini-ppc64.c: Removed.
7872
7873 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7874
7875         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7876         code to mono_bb_is_fall_through.
7877         
7878         * branch-opts.c (mono_remove_critical_edges): Same.
7879
7880 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7881
7882         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7883         expect that an OP_BR_REG will be there.
7884
7885 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7886
7887         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7888         for the many branch ops. The original check miss OP_BR_REG.
7889
7890         Fixes #457574.
7891         
7892 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7893
7894         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7895
7896 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7897
7898         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7899         while holding the aot lock.
7900
7901 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7902
7903         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7904         
7905 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7906
7907         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7908           to release all runtime callable wrappers held by the runtime.
7909
7910         Contributed under MIT/X11 license.
7911
7912 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7913
7914         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7915           for Winx64.
7916
7917         Contributed under MIT/X11 license.
7918
7919 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7922         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7923
7924 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7925
7926         * cpu-mips.md: fix ckfinite length
7927
7928         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7929         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7930         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7931         
7932 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7933
7934         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7935         
7936 2008-12-08  Geoff Norton  <gnorton@novell.com>
7937
7938         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7939         size by 8 bytes as well.
7940
7941 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7942
7943         * basic-simd.cs: Fix method names for Vector16b.
7944         
7945 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7946
7947         * basic-simd.cs: Fix method names for Vector16sb.
7948
7949 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * basic-simd.cs: Fix method names for Vector8us.
7952         
7953 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7954
7955         * basic-simd.cs: Fix method names for Vector8s.
7956         
7957 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * basic-simd.cs: Fix method names for Vector4ui.
7960
7961 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7962
7963         * basic-simd.cs: Fix method names for Vector2l.
7964
7965 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7966
7967         * basic-simd.cs: Fix method names for Vector2d.
7968
7969 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7970
7971         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7972         that are extension methods.
7973
7974 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7975
7976         * basic-simd.cs: Fix method names for Vector4f.
7977
7978 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7981         as such. Fixes #456669.
7982
7983 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7984
7985         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7986         
7987 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7988
7989         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7990         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7991         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7992         (mips_adjust_stackframe): handle FP spills
7993                 
7994         * mini-ops.h: add mips_mtc1_s2
7995         
7996         * cpu-mips.md: add mips_mtc1_s2
7997         
7998 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7999
8000         * unwind.c: New file, move the unwind info encoding functions here from
8001         aot-compiler.c, so they could be used at runtime too.
8002
8003 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8004
8005         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8006         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8007         
8008 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8009
8010         * mini-mips.c: cleanup warnings
8011         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8012         (mips_adjust_stackframe): handle case of taking the address of stack locals
8013         
8014 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * aot-compiler.c: Implement a few functions missing from the asm writer.
8017         (emit_method_code): Only write symbols for methods when using the bin
8018         writer, since the assembler can't deal with the characters in our method
8019         names.
8020
8021         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8022
8023         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8024         call.
8025
8026         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8027         a bit to also restore %rax.
8028
8029 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8030
8031         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8032
8033 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8034
8035         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8036         arguments.
8037
8038 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8039
8040         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8041
8042         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8043         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8044
8045         * exceptions-ppc64.c: Removed.
8046
8047         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8048
8049 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8050
8051         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8052         tramp-ppc64.c.
8053
8054         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8055
8056         * tramp-ppc64.c: Removed.
8057
8058 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8061         the TYPESPEC table.
8062
8063 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8064
8065         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8066
8067         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8068         mini-ppc.h instead of mini-ppc64.h.
8069
8070         * mini-ppc64.h: Removed.
8071
8072 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8073
8074         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8075         
8076         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8077         
8078 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8079
8080         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8081         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8082         code easier.
8083
8084 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8085
8086         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8087
8088 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8089
8090         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8091
8092 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8093
8094         * basic-simd.cs: Tests for operator == and != on Vector4f.
8095
8096 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8097
8098         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8099
8100         * simd-intrinsics.c: Kill useless enum.
8101
8102 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8103
8104         * cpu-mips.md: add long_conv_to_ovf_i4_2
8105         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8106
8107 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8108
8109         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8110         
8111         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8112
8113 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8114
8115         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8116         
8117 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8118
8119         * basic-simd.cs: Add tests for new methods.
8120
8121 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * simd-intrinsics.c: Add support for operator == and !=
8124         on Vector4(u)i.
8125
8126         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8127
8128 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8129
8130         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8131
8132 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8135
8136         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8137         MONO_PATCH_INFO_ICALL_ADDR.
8138
8139         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8140
8141         * aot-compiler.c: Resurrect full-aot support.
8142
8143 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8144
8145         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8146         
8147 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8148
8149         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8150         
8151 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8152
8153         * basic-simd.cs: Fix tests to work under ppc.
8154         Remove tests for methods that will be removed.
8155
8156 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8157
8158         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8159         generic type (via a typedef or typeref) correctly.
8160
8161 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8162
8163         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8164         diagnose an assertion failure.
8165
8166 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8167
8168         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8169         Fix trampoline size.
8170
8171         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8172         conversion opcodes are implemented natively instead via emulation.
8173
8174 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8175
8176         * cpu-mips.md: remove mips_xori
8177
8178         * mini-ops.h:  remove mips_xori
8179
8180         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8181
8182         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8183         
8184         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8185         
8186 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8187
8188         * cpu-mips.md: fix instruction lengths.
8189
8190         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8191
8192         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8193
8194         * mini-ops.h: fix slti / sltiu op profiles.
8195         
8196 2008-12-02  Martin Baulig  <martin@ximian.com>
8197
8198         * method-to-ir.c (mono_method_to_ir): Disable debugging
8199         information for the init locals block to make the debugger stop
8200         after all locals have been initalized.
8201
8202 2008-12-02  Martin Baulig  <martin@ximian.com>
8203
8204         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8205         running inside the debugger.
8206
8207 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8210         is enabled.
8211
8212         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8213         alu->alu imm optimization which only shows if deadce is disabled.
8214
8215         * aot-compiler.c: Rename the function names for the binary and asm writers
8216         so they can coexist in the same process. Rework the xdebug code to use the
8217         asm writer. This avoids the need to call into the runtime to dump the
8218         debugging info. Add more debugging info for types.
8219
8220         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8221
8222         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8223         cpu description tables, they can't occur in cpu-<ARCH>.md.
8224
8225         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8226         the stack in CEE_LDFLDA. Fixes #450542.
8227
8228         * generics.cs: Add a new test.
8229
8230 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8231
8232         * mini-ops.h: updated MIPS opcodes
8233         * mini-mips.c: decompose long opts
8234         * mini-mips.h: decompose long opts
8235         
8236 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8237
8238         * cpu-mips.md: fix length on int_rem_un
8239         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8240         
8241 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8242
8243         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8244
8245         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8246
8247 2008-11-29  Martin Baulig  <martin@ximian.com>
8248
8249         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8250         mono_debug_using_mono_debugger() in addition to the
8251         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8252
8253 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8254
8255         * mini-ops.h: updated more MIPS opcodes
8256         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8257         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8258         
8259 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8260
8261         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8262
8263 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8264
8265         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8266         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8267         * mini-ops.h: correct selected mips opcode entries
8268         
8269 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8270
8271         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8272         make them work.
8273
8274 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8275
8276         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8277
8278 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8279
8280         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8281         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8282         * mini-mips.h: disable IMT
8283         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8284         
8285 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8286
8287         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8288
8289 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8290
8291         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8292
8293 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8294
8295         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8296         consistency.
8297
8298 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8299
8300         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8301         for Set/GetVector aligned versions.
8302
8303 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8304
8305         * basic-simd.cs: Add tests for Get/SetVector.
8306
8307 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8308
8309         * mini.c: Removed g_slist_append_mempool().  Now in
8310         metadata/mempool.c.
8311
8312 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8313
8314         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8315         size properly and make the bounds check optional.
8316
8317         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8318         for SetVector and IsAligned.
8319
8320 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini.c: Remove unused mono_normalize_opcodes () function.
8323
8324 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8325
8326         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8327         using the new atomic add ops now.
8328
8329         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8330         add.
8331
8332 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8333
8334         * mini-ppc64.c: Several fixes.
8335
8336 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8337
8338         * cpu-mips.md: added jump_table
8339         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8340
8341 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8342
8343         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8344
8345 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8346
8347         * mini-ops.h: corrected a handful of MIPS opcodes.
8348
8349 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8350
8351         * aot-compiler.c: MIPS to use ELF writer
8352
8353 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8354
8355         * mini-codegen.c: remove MIPS specific assert.
8356
8357 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8358
8359         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8360         fixes.  PPC64 now passes most of the runtime regressions.
8361
8362 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8363
8364         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8365         volatile intervals a bit.
8366
8367 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8368
8369         * basic-long.cs: New test case.
8370
8371 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8372
8373         * mini.c (mini_method_compile): Disable globalra for large methods for 
8374         now.
8375
8376         * regalloc2.c (order_moves): Add fp support.
8377
8378         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8379         source bblock ends with an OP_BR_REG.
8380
8381         * ratests.cs: Add a new test.
8382
8383 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8384
8385         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8386         sharing.  PPC64 now passes generics.exe.
8387
8388 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8389
8390         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8391
8392 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8395         memory when mono_jit_info_table_find () can't find the method in the
8396         LMF case.
8397
8398         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8399         AOTed code too.
8400         
8401         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8402         writer too.
8403
8404 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8405
8406         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8407         Several fixes.  PPC64 now runs exceptions.exe and
8408         devirtualization.exe.
8409
8410 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8411
8412         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8413         arrays.exe and basic-math.exe.
8414
8415 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8416
8417         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8418         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8419
8420 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8421
8422         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8423
8424 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8425
8426         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8427
8428         * ir-emit.h: Move macros from method-to-ir.c to here.
8429
8430 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8431
8432         * mini-ops.h: Correct the long simd ops to use LREG.
8433
8434 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8435
8436         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8437         
8438         * mini-ops.h: Correct the dreg type of a few long opcodes.
8439
8440         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8441         Add netbsd support.
8442
8443 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8444
8445         * mini-ppc.c: remove negative stack references in epilog
8446         for platforms that don't support the red zone.
8447
8448 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8449
8450         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8451         point regs.  Now PPC64 passes basic-calls.exe.
8452
8453 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8454
8455         * basic-simd.cs: Add tests for accessors of Vector2l.
8456
8457 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8458
8459         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8460
8461         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8462         
8463         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8464
8465 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8466
8467         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8468         PPC64 passes basic-long.exe.
8469
8470 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8471
8472         * decompose.c: Decompose carry and overflow add on PPC64 like on
8473         other 64 bit archs.  Don't decompose sub at all on PPC64.
8474
8475         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8476         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8477         basic-long.exe.
8478
8479 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8480
8481         * basic-simd.cs: Add tests for accessors of Vector2d.
8482
8483 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8484
8485         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8486
8487         * cpu-x86.md: Same.
8488
8489         * mini-x86.c (mono_arch_output_basic_block): Same.
8490         
8491         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8492
8493 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8494
8495         * basic-simd.cs: Add tests for accessors of Vector4f.
8496
8497 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8498
8499         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8500
8501         * cpu-x86.md: Same.
8502
8503         * mini-x86.c (mono_arch_output_basic_block): Same.
8504         
8505         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8506
8507 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8508
8509         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8510
8511 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8514
8515         * cpu-x86.md: Same.
8516
8517         * mini-x86.c (mono_arch_output_basic_block): Same.
8518         
8519         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8520
8521 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8522
8523         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8524
8525 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8526
8527         * simd-intrinsics.c: Enable setters for Vector16sb.
8528
8529 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8530
8531         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8532
8533         * cpu-x86.md: Same.
8534
8535         * mini-x86.c (mono_arch_output_basic_block): Same.
8536         
8537         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8538
8539 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * simd-intrinsics.c: Implement setter for Vector8us.
8542
8543 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8546         for dead variables.
8547
8548 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8549
8550         * mini-ppc.c: remove references to the red zone in the prolog
8551         (for systems that don't support it).
8552
8553 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8554
8555         * cpu-ppc64.md: Fixed a few instruction lengths.
8556
8557         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8558         now.
8559
8560 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8561
8562         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8563         basic.exe now.
8564
8565 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8566
8567         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8568
8569 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8570
8571         * mini-ops.h: Added OP_INSERT_I2.
8572
8573         * cpu-x86.md: Same.
8574
8575         * mini-x86.c (mono_arch_output_basic_block): Same.
8576         
8577         * simd-intrinsics.c: Implement setter for Vector8s.
8578
8579         * simd-methods.h: Add the names of get setters of Vector8s.
8580
8581 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8584         
8585         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8586         parameters.
8587
8588         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8589
8590 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8591
8592         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8593         for PPC64.  An empty program runs now.
8594
8595 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8596
8597         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8598
8599         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8600         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8601         info for JITted code is emitted into a shared library, loadable into gdb.
8602
8603 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8604
8605         * Makefile.am: Changes to build PPC64.
8606
8607         * mini-arch.h: Include mini-ppc64.h on PPC64.
8608
8609 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8610
8611         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8612         in PPC code up to r119147.
8613
8614 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8615
8616         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8617         cpu-ppc64.md: Changes for PPC64.
8618
8619         Based on code submitted by andreas.faerber@web.de at
8620         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8621         X11/MIT license.
8622
8623 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8624
8625         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8626         cpu-ppc64.md: Copied from the corresponding PPC files from
8627         r118846.
8628
8629 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8630
8631         * mini-ops.h: Added OP_ROUND.
8632
8633         * cpu-x86.md: Added round.
8634
8635         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8636
8637         * basic-math.cs: Added test_0_round to test rounding.
8638
8639         Contributed under MIT/X11 license.
8640
8641 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8642
8643         * aot-compiler.c : Fix the Winx64 build.
8644
8645         Contributed under MIT/X11 license.
8646
8647 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8648
8649         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8650         in OP_EXTRACT_R8 to avoid possible stack corruption.
8651
8652 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8653
8654         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8655
8656         * cpu-x86.md: Added extract_r8.
8657
8658         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8659         
8660         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8661         a couple of OP_EXTRACT_I4.
8662
8663         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8664
8665         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8666
8667 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8668
8669         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8670         and not 4.1. 
8671
8672 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8673
8674         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8675         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8676
8677         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8678         are not needed any more.
8679
8680         * mini.h: Remove the unused INS_LIST macros.
8681
8682         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8683         longer needed.
8684
8685         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8686         ir-emit.h.
8687
8688         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8689         mono_alloc_ireg () instead.
8690
8691         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8692         macros.
8693
8694         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8695         on amd64.
8696
8697         * aot-runtime.c (load_aot_module): Disable AOT when running under
8698         CAS.
8699
8700         * mini-amd64.h: Change the monitor fastpath defines to check for
8701         !PLATFORM_WIN32 so they work on *bsd too.
8702
8703         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8704
8705         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8706
8707         * mini.h (MonoCompile): Remove new_ir flag.
8708
8709         * regalloc.h regalloc.c: Remove unused code.
8710
8711         * cpu-*.md: Remove more unused opcodes.
8712
8713         * simple-cee-ops.h simple-mini-ops.h: Removed.
8714
8715         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8716         
8717 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8718
8719         * aliasing.h: Removed.
8720
8721         * *.c: Remove references to aliasing.h and inssel.h.
8722
8723         * mini.c: Remove additional unused functions.
8724
8725         * mini-ops.h cpu-*.md: Remove unused opcodes.
8726
8727 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8728
8729         Remove the old JIT code.
8730
8731         * inssel*.brg: Removed.
8732
8733         * ssa.c abcremoval.c aliasing.c: Removed.
8734
8735         * ssa2.c: Renamed to ssa.c.
8736
8737         * abcremoval2.c: Renamed to abcremoval.c.
8738
8739         * *.c: Removed all !cfg->new_ir code.
8740
8741         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8742         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8743
8744         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8745         
8746 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8749         to simplify the code and cut back on the number of global symbols in the AOT
8750         file.
8751         
8752         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8753
8754 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8755
8756         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8757         with the got/got_info tables.
8758
8759         * mini.h: Bump AOT file format version.
8760         
8761         * unwind.h: New file, contains definitions for stack unwinding.
8762
8763         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8764         to cfg->unwind_ops.
8765         
8766         * aot-compiler.c: Generalize the emitting of unwind information to use the
8767         information in cfg->unwind_ops.
8768
8769         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8770
8771         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8772         AOT method frames. Enable writing symbols for methods by default.
8773
8774 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8775
8776         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8777         and make it work with vectors of element sizes 1, 2 and 4.
8778
8779         * simd-intrinsics.c: Enable getter for all vectors with element size
8780         1, 2 or 4.
8781
8782         * simd-methods.h: Add the names of other getters.
8783
8784         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8785
8786         * cpu-x86.md: Same.
8787
8788         * mini-x86.c: Same.
8789
8790 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8791
8792         * mini-ppc.h: portability fix.
8793
8794 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8795
8796         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8797         buggy and will overwrite it.
8798
8799 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8800
8801         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8802         Use it to emit local symbols for all methods so AOTed methods show up with
8803         their full name in gdb/valgrind output.
8804
8805 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8806
8807         * mini-ppc.c: portability fixes.
8808
8809 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8812         entries out of the if (!generic_shared...) code so it is always done.
8813         (mono_class_init_trampoline): Do the patching when running under valgrind
8814         too, newer versions of valgrind have no problems with it.
8815
8816 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8817
8818         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8819         further sections.
8820
8821 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8822
8823         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8824         filters.
8825
8826 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8827
8828         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8829
8830 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8831
8832         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8833
8834         * cpu-x86.md: Same.
8835
8836         * mini-x86.c: Same.
8837
8838         * simd-intrinsics.c: Same.
8839
8840 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8841
8842         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8843
8844 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8845
8846         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8847         to work with more Vector types.
8848
8849 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8850
8851         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8852         store the elemens directly instead of using and intermediate.
8853
8854 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8857
8858         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8859         to preserve %eax for aot plt trampolines.
8860
8861         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8862         (encode_method_ref): Flag synchronized methods so they won't go through
8863         the AOT trampoline.
8864
8865         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8866         wrappers.
8867
8868         * cpu-ia64.md (jmp): Increase max length.
8869
8870 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8873         open generic classes.
8874
8875         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8876
8877         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8878         box+brtrue optimization since it causes test failures on x86.
8879
8880 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8881
8882         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8883
8884         * cpu-x86.md: Same.
8885
8886         * mini-x86.c: Same.
8887
8888         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8889         for simd ctor values. 
8890
8891         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8892         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8893
8894 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8895
8896         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8897         LogicalRightShift.
8898
8899         * simd-instrincs.c: Same.
8900
8901         * basic-simd.cs: Same.
8902
8903 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8904
8905         * ratests.cs: Add more tests.
8906
8907         * regalloc2.c (add_spill_code): Handle more corner cases.
8908
8909 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8912         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8913         both the source an destination of an instruction.
8914
8915 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8916
8917         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8918         wapihandles.c: more portability changes.
8919
8920 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8921
8922         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8923         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8924         safe to execute in a signal handler and the kernel provides better
8925         the info in /proc/self/smaps. Avoid the assert on sigaction during
8926         cleanup.
8927
8928 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8931         do the bblock linking hack if it is actually needed.
8932
8933         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8934         up linking.
8935
8936         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8937         crash problem is fixed.
8938
8939         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8940         bblocks.
8941
8942         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8943         for catch clauses.
8944         (mini_method_compile): Set the starting value of next_vreg to 
8945         MAX_IREGS + MAX_FREGS when using globalra.
8946
8947         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8948         filter clauses with BB_EXCEPTION_HANDLER.
8949
8950         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8951
8952 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8953
8954         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8955         space for stdcall.  Fixes regressions on Win32.
8956
8957 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8958
8959         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8960         bblocks.
8961         (linear_scan): Remove an assert which doesn't seem to be needed.
8962
8963         * local-propagation.c (mono_local_deadce): Avoid a call to
8964         MONO_DELETE_INS which would screw up the instruction linking.
8965
8966         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8967
8968         * regalloc2.c: Upgrade to work the current JIT code.
8969
8970 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8971
8972         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8973         case.
8974
8975         * aot-runtime.c: Remove some dead code.
8976
8977         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8978         consistency.
8979         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8980
8981         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8982         trampolines using sscanf since atoi doesn't work on large unsigned values.
8983
8984         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8985         Initialize code_size.
8986
8987 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8988
8989         * method-to-ir.c (mini_emit_inst_for_method): Make
8990         Interlocked.CompareExchange work for Int arguments on 32 bit
8991         archs, as well.
8992
8993 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8994
8995         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8996
8997 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8998
8999         * main.c Fix MSVC build.
9000
9001         Contributed under MIT/X11 license.
9002
9003 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9004
9005         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9006         alignment larger than 8 bytes are aligned correctly, too.
9007
9008         * mini.c: Honor the min_align field of MonoClass when laying out
9009         the stack.
9010
9011 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9012
9013         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9014
9015         * aot-compiler.c (emit_plt): Fix a warning.
9016         
9017         * aot-compiler.c: Implement ARM support in the binary writer.
9018
9019 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9020
9021         * basic-simd.cs: Add test for getter with byref arg.
9022         Fix the naming of a few tests.
9023         Add missing checks to a test.
9024
9025 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9026
9027         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9028
9029         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9030         most of the full-aot support for monitor enter/exit trampolines.
9031
9032         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9033         enter/exit trampoline creation functions.
9034
9035         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9036         make dist.
9037
9038 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9039
9040         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9041         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9042         implement the needed functionality without adding crap to the runtime.
9043
9044 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9045
9046         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9047         non-x86 builds.
9048
9049         * mini.c (mono_build_date): New global version holding the build date in
9050         string format.
9051         
9052         * Makefile.am (buildver.c): Generate a file containing the build date.
9053
9054         * main.c: Set the build date from the generated file.
9055
9056         * mini.c (mono_get_runtime_build_info): New helper function returning build
9057         information in a string format.
9058         
9059         * driver.c (mono_main): Print the build date in --version.
9060
9061         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9062         file when the bind-to-runtime-version option is used.
9063
9064 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9065
9066         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9067
9068 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9069
9070         * simd-methods.h: Rename prefetch methods.
9071
9072         * simd-intrinsics.c: Same.      
9073
9074 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9075
9076         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9077         sizes.
9078
9079 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9080
9081         * aot-compiler.c: Use the bundled elf header files instead of depending on
9082         the system one.
9083         
9084         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9085         mempool.
9086
9087         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9088         on every call.
9089
9090 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * cpu-x86.md: Add store nta ops.
9093
9094         * mini-ops.h: Same.
9095
9096         * mini-x86.c: Same.
9097
9098         * mini.h: Add an enum for simd prefetch modes.
9099
9100         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9101         of store. Use the changed code to support store nta.
9102
9103         * simd-intrinsics.c: Add prefetch ops for all vector types.
9104
9105 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9108         threads.
9109         
9110         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9111         names.
9112
9113         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9114         trampolines.
9115
9116 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9117
9118         * mini-x86.c: Fixed commit.
9119
9120 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9123
9124 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9125
9126         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9127         and MONITOR_EXIT, for the ASM fastpaths.
9128
9129         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9130         available.
9131
9132         * mini.c, patch-info.h: Signature and patch infos for
9133         Monitor.Enter/Exit trampolines.
9134
9135         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9136
9137         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9138         Monitor.Enter/Exit ASM fastpath for Linux.
9139
9140 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9141
9142         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9143
9144         * objects.cs: Add a new test.
9145         
9146         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9147
9148         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9149         if MONO_LOG_LEVEL is set.
9150
9151         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9152
9153         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9154
9155         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9156         
9157         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9158         of file offsets. Align the sections belonging to the data segment to 
9159         PAGESIZE.
9160
9161 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9162
9163         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9164         elf.h. Port it to amd64.
9165
9166 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9167
9168         * driver.c: Enable SIMD by default.
9169
9170 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9171
9172         * cpu-x86.md: Add prefetch op.
9173
9174         * mini-ops.h: Same.
9175
9176         * mini-x86.c: Same.
9177
9178         * mini.h: Add an enum for simd prefetch modes.
9179
9180         * simd-methods.h: Add prefetch function names.
9181
9182         * simd-intrinsics.c: Add prefetch ops for all vector types.
9183
9184 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9185
9186         * aot-compiler.c (emit_bytes): Speed this up a little.
9187
9188 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * aot-compiler.c: Add JIT time etc. statistics.
9191         
9192         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9193
9194         * mini.h (MonoCompile): Add 'got_offset' field.
9195
9196         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9197         method_got_offsets array.
9198
9199         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9200         wrappers.
9201
9202         * aot-compiler.c (compile_method): Add generic method instances referenced
9203         by the method to the list of methods to be compiled, this is required so if
9204         A<T> references B<T>, and another assembly references A<int>, then it will
9205         also get a copy of B<int>.
9206
9207         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9208         when checking for monitor enter/exit.
9209
9210 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9211
9212         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9213         for Monitor.Enter and Monitor.Exit if enabled.
9214
9215         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9216         Solaris.
9217
9218 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9219
9220         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9221         of an OP_MOVE. Fixes #440046.
9222
9223         * basic-long.cs: Add a new test.
9224
9225 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9226
9227         * mini.h: Add synchronization note for the managed counter-part.
9228
9229         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9230         returns the simd caps of the current cpu.
9231
9232 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9233
9234         * basic-simd.cs: Remove Console.WriteLine.
9235
9236 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9237
9238         * basic-simd.cs: New tests for Vector2ul.
9239
9240 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9241
9242         * simd-intrinsics.c: Add new vector type Vector2ul.
9243
9244 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9245
9246         * basic-simd.cs: New tests for Vector2l.
9247
9248 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9249
9250         * cpu-x86.md: Add long version of most packed int ops.
9251
9252         * mini-ops.h: Same.
9253
9254         * mini-x86.h: Same.
9255
9256         * simd-intrinsics.c: Add new vector type Vector2l.
9257
9258 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9259
9260         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9261
9262         * simd-methods.h: Remove SN_op_BitwiseXor.
9263
9264 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9265
9266         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9267         alignment.
9268
9269 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9270
9271         * basic-simd.cs: Test for Vector2d.
9272
9273         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9274         value.
9275
9276 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9277
9278         * cpu-x86.md: Add double version of all packed float ops.
9279
9280         * mini-ops.h: Same.
9281
9282         * mini-x86.h: Same.
9283
9284         * simd-intrinsics.c: Add new vector type Vector2d.
9285
9286         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9287
9288         * simd-methods.h: Add Duplicate.
9289
9290 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * basic-simd.cs: Test for packing with signed saturation.
9293
9294 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9295
9296         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9297         found in the TYPESPEC table.
9298
9299 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9300
9301         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9302         too.
9303
9304         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9305
9306         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9307         instead of the RVA, since the RVA can be changed by tools like the cil 
9308         stripper.
9309
9310         * method-to-ir.c (mono_method_to_ir2): Ditto.
9311
9312         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9313         (deserialize_variable): Ditto.
9314
9315 2008-10-25  Martin Baulig  <martin@ximian.com>
9316
9317         * debug-mini.c (write_variable): Use
9318         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9319
9320 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9321
9322         * cpu-x86.md: Add unsigned variants of packd and packw.
9323
9324         * mini-ops.h: Same.
9325
9326         * mini-x86.h: Emit the right instruction for packd and packw.
9327         Add unsigned variants of packd and packw.
9328
9329         * simd-intrinsics.c: Packd and packw were used in place of their
9330         unsigned variants. Change that.
9331         Add intrinsics for (Signed)PackWithSignedSaturation.
9332
9333         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9334
9335 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9336
9337         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9338
9339 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9340
9341         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9342
9343         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9344
9345         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9346         sse instructions.
9347
9348         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9349
9350 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9351
9352         * method-to-ir.c, mini.c: Special casing for the synchronized
9353         wrapper for the ldtoken+GetTypeFromHandle case.
9354
9355 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9356
9357         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9358
9359         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9360         created/split bblocks.
9361
9362 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9363
9364         * mini-ops.h: Add packed signed mul high.
9365         
9366         * cpu-x86.md: Same.
9367
9368         * mini-x86.c (mono_arch_output_basic_block): Same.
9369
9370         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9371
9372         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9373
9374 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9375
9376         * basic-simd.cs: Tests for Vector16sb.
9377
9378 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9379
9380         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9381
9382 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9383
9384         * mini-ops.h: Add packed signed min, max and compare greater.
9385         
9386         * cpu-x86.md: Same.
9387
9388         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9389         saturation.
9390
9391         * simd-methods.h: Add CompareGreaterThan.
9392
9393         * simd-methods.h: Remove CompareEquals.
9394
9395         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9396
9397         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9398
9399         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9400         CompareEqual.
9401
9402 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9403
9404         * basic-simd.cs: Fix tests due to change in the API.
9405
9406 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9409
9410 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9411
9412         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9413
9414         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9415         inst_offset as this has invalid values for LDADDR.
9416
9417 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9418
9419         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9420
9421         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9422
9423 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9424
9425         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9426         for accessing field->data.
9427
9428 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9429
9430         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9431
9432 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9435
9436         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9437
9438 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9441         from the cfg mempool.
9442
9443 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9444
9445         * basic-simd.cs: Tests for new methods in Vector8us.
9446
9447 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9448
9449         * mini-ops.h: Add multiply and store high.
9450         
9451         * cpu-x86.md: Same.
9452
9453         * mini-x86.c (mono_arch_output_basic_block): Same.
9454
9455         * simd-methods.h: Same.
9456
9457         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9458         and CompareEqual.
9459
9460 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9463         mono_class_setup_vtable ().
9464
9465         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9466         mono_class_get_vtable_entry () for accessing klass->vtable.
9467
9468         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9469
9470         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9471         found.
9472
9473         * method-to-ir.c (mono_save_token_info): Don't save references made from
9474         wrappers.
9475
9476         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9477         of generic instances.
9478
9479         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9480
9481 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9482
9483         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9484         OP_JMP depends on the method signature.  Calculate it properly.
9485
9486 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9487         
9488         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9489         called directly.
9490
9491         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9492         instances.
9493         (emit_extra_methods): Add another table mapping method indexes to 
9494         offsets in the extra_method_info table.
9495
9496         * mini.h: Bump AOT file format version.
9497         
9498         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9499         and mono_aot_get_method_from_token () into one function.
9500
9501 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9502
9503         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9504         separate counter.
9505
9506 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9509         methods.
9510
9511         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9512         disable_aot.
9513
9514         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9515
9516         * mini.h: Bump aot file format version.
9517
9518         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9519         AOT file can contain native code for methods which are not in the METHOD
9520         table. Generate code for non-sharable generic instances of generic methods
9521         found in the METHODSPEC table.
9522         
9523         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9524         encoding generic type handles.
9525
9526         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9527         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9528
9529         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9530         macros + MONO_ADD_INS.
9531
9532         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9533         context as well.
9534
9535         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9536
9537         * mini.h: Bump aot file format version.
9538
9539         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9540
9541 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9542
9543         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9544         platforms, with definable stack alignment value.  Set to 16 now
9545         for all platforms.
9546
9547         * mini.c, mini.h, driver.c: Command line option for disabling
9548         stack alignment.
9549
9550 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9551
9552         * basic-simd.cs: Tests for new methods in Vector4ui.
9553
9554 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9555
9556         * mini-ops.h: Add packed int shuffle.
9557         
9558         * cpu-x86.md: Same.
9559
9560         * mini-x86.c (mono_arch_output_basic_block): Same.
9561
9562         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9563         extract mask, max, min, shuffle.
9564
9565         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9566
9567 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9568
9569         * basic-simd.cs: Tests for new methods in Vector8us.
9570
9571 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9572
9573         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9574         RuntimeTypeHandle, not a TypedReference.
9575
9576 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9577
9578         * simd-intrinsics.c: remove relocations.
9579
9580 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9581
9582         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9583         optimizations from the x86 backend.
9584
9585 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9586
9587         * simd-methods.h, simd-intrinsics.c: debloat method names and
9588         prepare for no relocations.
9589
9590 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9591
9592         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9593         
9594         * cpu-x86.md: Same.
9595
9596         * mini-x86.c (mono_arch_output_basic_block): Same.
9597
9598         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9599         extract mask, max, min and sum of absolute differences.
9600
9601         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9602         method name.
9603
9604 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9605
9606         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9607         Renamed one test for consistency.
9608
9609 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9610
9611         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9612         fix to the code that deal with other blocks.
9613
9614 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9615
9616         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9617
9618 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9619
9620         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9621         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9622         able to process the source reg.
9623
9624 2008-10-16  Martin Baulig  <martin@ximian.com>
9625
9626         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9627
9628         * inssel.brg: Add `OP_HARD_NOP'.
9629
9630         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9631
9632         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9633         `OP_HARD_NOP' instruction when running inside the debugger.
9634
9635         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9636         `OP_HARD_NOP' instruction when running inside the debugger.
9637
9638 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9639
9640         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9641         now works. The issue with the regalloc tripping up no longer
9642         happens.
9643
9644         * simd-intrinsics.c (load_simd_vreg): Same.
9645
9646 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9647         
9648         * basic-simd.cs: Tests for new Vector8ui methods.
9649
9650 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9651
9652         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9653         only for type. This fixes crashes where MonoInst::klass is checked
9654         for ops of type != VTYPE or OBJ.
9655
9656         * simd-intrinsics.c (load_simd_vreg): Same.
9657
9658 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9659
9660         * mini-ops.h: Add ops for packed shuffle/max/avg and
9661         extract mask.
9662         
9663         * cpu-x86.md: Same.
9664
9665         * mini-x86.c (mono_arch_output_basic_block): Same.
9666
9667         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9668         extract mask.
9669
9670         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9671         to emit extract mask op.
9672
9673         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9674         to emit word shuffles.
9675
9676 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9677
9678         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9679         the largest alignment needed by a variable, but at least
9680         sizeof(gpointer).
9681
9682 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * basic-simd.cs: Tests for the fixes in the last commit.
9685
9686 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9689         no longer handles STACK_PTR input.
9690
9691         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9692
9693         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9694         get_simd_vreg   but handles STACK_PTR input.
9695
9696         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9697         as the input can be an arbitrary pointer.
9698
9699         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9700         LDADDR local optimization directly otherwise use a store op.
9701
9702 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9703
9704         * basic-simd.cs: Tests for dup low and dup high.
9705
9706 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9707
9708         * mini-ops.h: Add dup low and dup high ops.
9709         
9710         * cpu-x86.md: Same.
9711
9712         * mini-x86.c (mono_arch_output_basic_block): Same.
9713
9714         * simd-intrinsics.c (vector4f_intrinsics): Same.
9715
9716 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9717
9718         * basic-simd.cs: Tests for recently added functionality.
9719
9720 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9721
9722         * mini-ops.h: Add remaining sse1 fp ops.
9723         
9724         * cpu-x86.md: Add remaining sse1 fp ops.
9725
9726         * mini-x86.c (mono_arch_output_basic_block): Same.
9727
9728         * mini.h: Add enum for simd FP compare conditions.
9729
9730         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9731
9732         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9733         so the backed can generate the appropriate op.
9734
9735 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9736         This patch squeese one more byte from the SimdIntrinsc struct.
9737
9738         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9739         a a shift amount intead of simply or'ing it.
9740
9741         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9742
9743         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9744         byte so we can have an aditional flags field without increasing struct size.
9745
9746         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9747         against the simd_supported_versions bitmask.
9748
9749         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9750
9751 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9752
9753         * mini.c: remove rawbuffer code (the only use here is unsafe because
9754         it takes locks during signal handling and the kernel now provides much
9755         better info in proc/pid/smaps these days).
9756
9757 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9758
9759         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9760         OP_X86_PUSH_OBJ. Fixes #434620.
9761
9762         * objects.cs: Add a test.
9763         
9764 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9767         that the packuswb/packusdw don't work with unsigned numbers for what
9768         would be negative numbers in signed format.
9769
9770         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9771         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9772
9773         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9774
9775         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9776
9777         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9778
9779         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9780
9781         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9782         add more ops.
9783
9784         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9785         version as the enum in mini.h.
9786
9787         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9788         for sse3 ops, check the simd_version field if present. This way the code
9789         works with all versions of sse.
9790
9791 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9792
9793         * simd-intrinsics.c: Fixed intrinsic name typo.
9794
9795         * mini.h: Added missing simd exported function.
9796
9797         * basic-simd.cs: Added tests for Vector4ui.
9798         Fixed broken test for Vector16b.
9799
9800 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9801
9802         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9803         the max length to 64.
9804
9805 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9806
9807         * method-to-ir.c: Only do the fast virtual generic method call for
9808         non-wrapper methods.
9809
9810         * mini.h, mini-trampolines.c: The new generic virtual remoting
9811         trampoline handles virtual method calls via the vtable (as done by
9812         the fast virtual generic method calls) to remoting proxies.
9813
9814         * mini.c (mono_jit_create_remoting_trampoline): For generic
9815         methods reate a generic virtual remoting trampoline.
9816
9817         * mini-amd64.h: Enable fast virtual generic method calls again.
9818
9819 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9820
9821         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9822         restore registers when doing tail calls.
9823
9824 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9825
9826         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9827         Vector4ui.
9828
9829 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9830
9831         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9832
9833 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9834
9835         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9836
9837 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9838
9839         * basic-simd.cs: Retrofit for API changes.
9840
9841 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9842
9843         * mini-ppc.c: Handle integer stack arguments for tail calls.
9844
9845 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9846
9847         * optflags-def.h: Removed sse3 optimization.
9848
9849         * driver.c: Same.
9850
9851         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9852         sse3.
9853
9854         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9855
9856         * mini.h: Added enumeration with simd versions.
9857
9858         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9859         for detecting SSE3.
9860
9861         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9862
9863         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9864
9865 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9866
9867         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9868
9869         * basic-simd.cs: Fixed test naming.
9870
9871 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9872
9873         * mini-ops.h: Added ops for packed and saturated math, shifts
9874         and packing/unpacking.
9875
9876         * cpu-x86.md: Added descriptors for the above ops.
9877
9878         * mini-x86.c: Added code to emmit the above ops.
9879
9880         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9881
9882 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9883
9884         * aot-compiler.c (compile_method): Enable AOT for generic code.
9885
9886         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9887
9888 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9889
9890         * mini.c: add a workaround for a common screwup that ends up blamed
9891         to mono (other processes blocking signal delivery).
9892
9893 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9896         in the LDFLD/STFLD opcodes. Fixes #432673.
9897
9898         * iltests.il.in: Add a new test.
9899
9900 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9901
9902         * mini-arm.c: attach the thread in unmanaged->managed transitions
9903         using delegates (bug #433148).
9904
9905 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9906
9907        * basic-simd.cs: Use new ShuffleSel constants.
9908
9909 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9910
9911         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9912
9913         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9914         only disable simd intrinsics if no sse2 is detected.
9915
9916         * optflags-def.h: Added sse3.
9917
9918         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9919         is disabled.
9920
9921 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9922
9923         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9924         when adding delegate-invoke wrappers.
9925
9926 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * Makefile.am: Reenable the simd tests.
9929
9930 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9931
9932         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9933           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9934           other vreg is allocated to that hreg.
9935
9936         Contributed under MIT/X11 license.
9937
9938 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9941         yet checked in.
9942
9943 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9944
9945         * basic-simd.cs: New test suite for SIMD intrinsics.
9946
9947         * Makefile.am: Added new tests.
9948
9949 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9950
9951         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9952
9953         * mini-ops.h: Same.
9954
9955         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9956
9957         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9958         using SSE2 aware opcodes.
9959
9960         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9961         is enabled, this code path is only reachable if conversion ops are emmited after
9962         mono_method_to_ir.
9963
9964         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9965
9966         This optimization saves 6 bytes per conversion against the old version.
9967
9968 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9969
9970         * aot-compiler.c (compile_method): Don't skip methods referencing 
9971         generic methods without a corresponding entry in token_info_hash, since
9972         encode_method_ref () can handle all generic methods now.
9973
9974         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9975         generic context is set.
9976         
9977         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9978         generic sharing of LDTOKEN.
9979
9980 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9981
9982         * mini-amd64.h: Temporarily disabled fast virtual generic method
9983         calls because it breaks the System.Runtime.Remoting tests.
9984
9985 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9988
9989         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9990         so inlining actually works.
9991         (check_inline_caller_method_name_limit): Ditto.
9992
9993 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9994
9995         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9996         64 bit safety (from Olaf Hering and Andreas Farber).
9997
9998 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9999         
10000         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10001         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10002         unused virtual call support code.
10003
10004         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10005         
10006         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10007         which can't use aot trampolines.
10008         (decode_patch): Don't create aot trampolines for methods which can't use
10009         them.
10010
10011         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10012         use aot trampolines.
10013
10014         * mini.h: Bump AOT image format version.
10015         
10016 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10019         to save_token_info () since cmethod is inflated for constrained calls.
10020
10021         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10022
10023 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10024
10025         * Makefile.am: Add build rules for ppc64.
10026         This avoids the build failing at pedump with unresolved symbols
10027         due to lack of arch_sources. Instead it will now fail earlier
10028         due to lack of cpu-ppc64.md.
10029
10030         Contributed under MIT/X11 license.
10031
10032 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10033
10034         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10035         tail calls.
10036
10037         * iltests.il.in: Add test case for tail call with many arguments.
10038
10039 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10040
10041         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10042         to the fast virtual generic method code until the aot case is fixed.
10043
10044 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10045
10046         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10047
10048 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10049
10050         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10051         thunks.
10052
10053 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10054         
10055         * simd-intrinsics.c: Forgot to add this one.
10056
10057         * mini-codegen.c: Fix macro in case SIMD is not supported.
10058
10059 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10060         
10061         This patch land initial JIT support for simd intrinsics.
10062
10063         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10064
10065         * Makefile.am: Added simd-intrinsics.c
10066
10067         * simd-intrinsics.c: New file with simd instrinsic related
10068         code.
10069
10070         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10071
10072         * cpu-x86.md: Add simd related instructions.
10073
10074         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10075
10076         * driver.c: Added two new --regression variants.
10077
10078         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10079
10080         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10081
10082         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10083         extract some complicated logic to helper functions.
10084
10085         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10086
10087         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10088
10089         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10090         the specialized simplification pass.
10091
10092         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10093
10094         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10095
10096         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10097         table.
10098
10099         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10100         if MONO_ARCH_NEED_SIMD_BANK is defined.
10101
10102         * mini-ops.h: Added the new simd ops.
10103
10104         * mini-x86.c: Added mono_arch_xregname.
10105
10106         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10107
10108         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10109
10110         * mini-x86.h: Define simd related MONO_ARCH macros.
10111
10112         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10113
10114         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10115
10116         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10117         MONO_CLASS_IS_SIMD to deal with simd related IR.
10118
10119         * mini.h (MonoInst): Added spill_var to the backend union.
10120
10121         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10122
10123         * mini.h: Added forward declarations of the new simd fuctions.
10124
10125         * optflags-def.h: Added new optimization names SIMD.
10126
10127         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10128
10129         * regalloc.h: Added support for working with 3 register banks.
10130
10131         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10132
10133         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10134
10135 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10136
10137         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10138
10139 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10140
10141         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10142         instead of one on 64 bit systems.
10143
10144         * method-to-ir.c: Remove unused includes.
10145
10146 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10147
10148         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10149         cfg->used_int_regs, since the two are different on arm.
10150
10151 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10152
10153         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10154         mono_method_get_vtable_index() to get the vtable index.
10155
10156 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10157
10158         * method-to-ir.c (mono_method_to_ir2): Don't create native
10159         wrappers for array methods, because they're never called (and if
10160         they were called they wouldn't work).
10161
10162 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10163
10164         * method-to-ir.c (mono_method_to_ir2): Array methods are
10165         special-cased and must not be invoked indirectly via the (M)RGCTX
10166         when generic sharing is turned on.  Fixes #431413.
10167
10168 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10169
10170         * method-to-ir.c: When generic sharing is active, call
10171         non-interface virtual generic methods via the standard trampoline.
10172
10173         * mini-trampolines.c: Handle virtual generic shared methods.
10174
10175         * mini.h, mini-x86.c, mini-x86.h: New argument for
10176         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10177         method thunks and which is the trampoline to call if the lookup
10178         fails.  Enable the virtual generic method thunk for x86.
10179
10180         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10181         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10182         argument but assert that it's NULL, because these archs don't yet
10183         implement the virtual generic method thunk.  Changes in the IMT
10184         thunk data structures.
10185
10186 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10187
10188         * aot-compiler.c (emit_globals): Avoid invalid characters in
10189         the static linking symbol.
10190
10191         * objects.cs: Add a test for the range check optimization. Fix warnings.
10192
10193         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10194         optimization from the current JIT.
10195
10196         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10197         later in decompose_array_access_opts () to allow more optimizations.
10198
10199         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10200         mono_decompose_soft_float () for consistency.
10201
10202         * mini-ops.h: Fix arguments of OP_STRLEN.
10203
10204         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10205         into a separate function.
10206         (reset_cast_details): Ditto.
10207         (handle_unbox): Save cast details. Fixes #431254.
10208
10209         * method-to-ir.c: Remove some obsolete FIXMEs.
10210
10211 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10212
10213         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10214
10215 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10216
10217         * mini-codegen.c: More work on macros to make them
10218         ready for multiple regbanks.
10219
10220 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10221
10222         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10223
10224         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10225
10226 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10227
10228         * mini-codegen.c (mono_spillvar_offset): Proper support for
10229         multiple regbanks.
10230
10231 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10232
10233         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10234         the stack overflow changes.
10235
10236 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10237
10238         * mini-codegen.c: Make all bank macros depend on reg_bank.
10239
10240         * mini-codegen.c (mono_local_regalloc): Make free mask
10241         initialization regbank aware.
10242
10243 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10244
10245         * mini-codegen.c (mono_local_regalloc): Extract callee
10246         mask selection to a function and make it regbank aware.
10247
10248 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10249
10250         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10251         code to deal with many regbanks.
10252
10253 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10254
10255         * mini-codegen.c: More fp->regbank changes.
10256
10257 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10258
10259         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10260         of a hardcoded constant.
10261
10262 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10263
10264         * method-to-ir.c (type_from_stack_type): Fix typo.
10265
10266 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * mini-ia64.c (emit_move_return_value): Convert float return values to
10269         double.
10270
10271         * objects.cs: Add a new test.
10272         
10273         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10274         VARARG methods to fix an assert later.
10275
10276         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10277         end so it at least compiles.
10278
10279 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10282
10283 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10284
10285         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10286         optimization to a new function (emit_optimized_ldloca_ir) and enable
10287         it for both ldloca and ldloca_s.
10288
10289 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10292         gshared CASTCLASS code.
10293
10294         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10295         amd64, where the libc stack unwinder encounters stack frames referring to
10296         native code in unmapped memory.
10297
10298         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10299         sharing.
10300
10301         * generics.cs: Add new test.
10302
10303 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10306         add a check that one of the ARM_FPU_ constants is defined.
10307
10308         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10309         
10310         * mini-exceptions.c: Fix build on non-altstack platforms.
10311
10312         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10313         sharing of vtypes.
10314
10315         * ir-emit.h: Add a comment to NEW_PCONST.
10316
10317         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10318
10319         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10320
10321         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10322         after the changes to MonoJitDomainInfo.
10323
10324 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10325
10326         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10327
10328 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10329
10330         * mini-ppc.c: Compiler warning fixes.
10331
10332 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10333
10334         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10335         for pinvokes.
10336
10337 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10338
10339         * exceptions-ppc.c, mini-ppc.h: Compile
10340         mono_arch_handle_altstack_exception() on Darwin, too.
10341
10342 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10343
10344         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10345         work on archs which don't have generic sharing implemented, only
10346         without the vtable_arg.
10347
10348 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10349
10350         * mini.c: Added comment explaining why delegate ctor icall
10351         wrappers are compiled.
10352
10353 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10354
10355         * mini.c: Don't produce trampolines to delegate ctor icall
10356         wrappers but compile them upfront.
10357
10358 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10359
10360         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10361         runtime-set function when going back to managed code. Currently this
10362         is used to set back the protection on the soft ovf pages and/or to
10363         throw the stack overflow exception that happened in unmanaged code.
10364
10365 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10366
10367         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10368         runtime-set function when going back to managed code. Currently this
10369         is used to set back the protection on the soft ovf pages and/or to
10370         throw the stack overflow exception that happened in unmanaged code.
10371
10372 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10373
10374         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10375         the support code for restoring stack protection after stack overflows
10376         that happen in unmanaged code. Don't set the exec permission on the
10377         soft overflow area.
10378
10379 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10382         delegate->method_ptr is set. Fixes #428054.
10383
10384 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10385
10386         * tests.cs: Rename to ratests.cs.
10387
10388         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10389         emit_get_rgctx_... functions.
10390
10391 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10392
10393         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10394
10395 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10396
10397         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10398         before asserting that method is sharable.
10399
10400 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10401
10402         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10403         whether method needs a static RGCTX wrapper used instead of
10404         complex conditions.
10405
10406         * generic-sharing.c, mini.h: A few functions moved to
10407         metadata/generic-sharing.c.
10408
10409 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10410
10411         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10412         Generic code sharing for value types, which essentially means
10413         treating value type methods like static methods.  The RGCTX is
10414         passed in the same way.
10415
10416 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10419         opcode when creating multi-dimensional arrays of open types.
10420
10421         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10422         open generic types.
10423
10424         * generics.cs: Add a test.
10425
10426         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10427
10428 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10431
10432         * mini.c (mini_method_compile): Set it when running under the debugger. 
10433
10434         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10435         vreg optimization if the flag is set.
10436
10437         * driver.c (mono_main): Add --attach= option to pass options to
10438         the attach agent.
10439
10440         * mini.c (sigquit_signal_handler): Start the attach agent.
10441
10442         * ssapre.c: Disable this to save space since it is not yet ported to
10443         linear IR.
10444
10445         * regalloc2.c: Disable this to save space.
10446
10447         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10448
10449 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10450
10451         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10452         the -v option useful again.
10453
10454 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10457         --break-at-bb.
10458
10459         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10460         arrays of arrays. Fixes #428406.
10461
10462         * method-to-ir.c (mini_emit_castclass): Ditto.
10463
10464         * objects.cs: Add new test.
10465         
10466 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10467
10468         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10469         was wrong at it choked against target_type_is_incompatible for byref types.
10470
10471 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10472
10473         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10474         places.
10475
10476 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10477
10478         * mini-exceptions.c: update a few more exceptions-related counters.
10479
10480 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10481
10482         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10483         new functions to allocate from persistent mempools.
10484
10485 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10488         multiple register banks in the future.
10489
10490         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10491
10492 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10493
10494         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10495
10496         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10497
10498         * mini.h: Export type_to_eval_stack_type.
10499
10500         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10501         is only ins->klass of byref types.
10502
10503 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10504
10505         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10506         (mini_emit_memcpy2): Ditto.
10507
10508         * mini-amd64.c: Fix a warning.
10509
10510 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10511
10512         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10513         linking.
10514
10515 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10516
10517         * method-to-ir.c: Extract stloc micro-optimization to a
10518         function and apply it to all cases.
10519
10520 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10521
10522         * method-to-ir.c: Don't fail generic code sharing in cases we
10523         already support.
10524
10525 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10526
10527         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10528
10529 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10530
10531         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10532         implementation.
10533
10534 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10535
10536         * trace.c: make tracing more useful and correct, with per-thread
10537         id and indent info.
10538
10539 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10540
10541         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10542         doing a method call and the argument is an R4.
10543
10544 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10545
10546         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10547         generic methods.
10548
10549 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10550
10551         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10552
10553 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10556         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10557
10558 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * driver.c: Add a --agent argument (not supported yet) to load managed
10561         agent assemblies before loading the main assembly, similarly to how the
10562         Java VM handles agents.
10563
10564 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10565
10566         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10567         function to do stack layout of local variables.
10568
10569 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10570
10571         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10572         calculation.
10573
10574 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10575
10576         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10577         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10578         JIT if DISABLE_JIT is defined.
10579
10580         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10581         defined.
10582
10583 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10584
10585         * iltests.il.in: Disable the fconv test on PPC (the result is
10586         undefined according to ECMA).
10587
10588 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10589
10590         * iltests.il.in: Enable tail call tests for PPC.
10591
10592         * mini.h: Add variable for storing incoming valuetype argument
10593         addresses for tail calls.
10594
10595         * mini-ppc.c: Implement valuetype arguments and return values for
10596         tailcalls on Linux.
10597
10598 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10599
10600         * mini-ppc.c: Partially implement tail calls (struct arguments and
10601         return values not supported).
10602
10603         * method-to-ir.c: Enable tail calls on PPC.
10604
10605 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10606
10607         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10608         runtime-invoke wrappers to work around the problem of them getting
10609         assigned to a random class.
10610
10611         * aot-runtime.c (mono_aot_get_method): Ditto.
10612         
10613 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10614
10615         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10616         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10617
10618 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10619
10620         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10621         until they're implemented properly.
10622
10623         * exceptions-ppc.c: Use arch-independent exception-handling code
10624         instead of custom one.
10625
10626         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10627         for Linear IR.
10628
10629         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10630
10631         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10632         applies when __powerpc__ is defined.
10633
10634 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10635
10636         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10637         methods to their code to avoid computing the full name of wrappers and
10638         doing a lookup in a string hash table.
10639
10640 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10641
10642         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10643         we identify bblocks before method_to_ir () is ran.
10644
10645         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10646         Also avoid optimizing branches pointing to themselves.
10647
10648         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10649
10650 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10651
10652         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10653
10654 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10657         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10658         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10659         'buf'.
10660
10661         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10662         jumped to the same entry in plt_jump_table.
10663
10664 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10665
10666         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10667         dynamic images.
10668
10669 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10672         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10673         #421807.
10674
10675 2008-08-29  Geoff Norton  <gnorton@novell.com>
10676
10677         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10678         segment, and doesn't properly handle .space as .text.  Fixes
10679         AOT Mach/ARM
10680
10681 2008-08-29  Geoff Norton  <gnorton@novell.com>
10682
10683         * mini.c: Disable the mach exception handler when running on 
10684         ARM
10685
10686 2008-08-29  Geoff Norton  <gnorton@novell.com>
10687
10688         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10689         globals on Darwin/ARM
10690
10691 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10692
10693         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10694         since too many things depend on it. Instead, call 
10695         mono_runtime_set_no_exec ().
10696         
10697         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10698         the new JIT.
10699
10700         * aot-compiler.c: Add an 'asm-only' AOT option.
10701
10702         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10703                 
10704         * aot-compiler.c (compile_method): Disable gshared support for now as it
10705         doesn't yet work.
10706
10707 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10708
10709         * mini-amd64.h : Fix a compiler warning.
10710
10711         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10712           Changed to use a callback function to retrieve the unwind info.
10713           This avoids problems observed when code blocks were removed by
10714           unloading an app domain.
10715
10716         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10717           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10718           to work properly.
10719
10720         Contributed under MIT/X11 license.
10721
10722 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10723
10724         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10725           case to keep the stack aligned to 8.
10726
10727         Contributed under MIT/X11 license.
10728
10729 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10732         avoid repeated linear searches.
10733
10734 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10735
10736         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10737         methods it can't handle.
10738         
10739         * aot-compiler.c (add_method): Avoid adding a method twice.
10740         (add_wrappers): Add runtime invoke wrappers for all methods.
10741
10742         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10743         function to create an aot-compatible version of this trampoline.
10744
10745         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10746
10747 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10750
10751         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10752         with a generic sharing failure.
10753
10754         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10755
10756         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10757         CEE_RETHROW. Fixes #419634.
10758
10759         * mini.c (mono_method_to_ir): Ditto.
10760
10761         * exceptions.cs: Add a new test.
10762         
10763         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10764         to mono_type_stack_size_internal () since some callers might not pass in
10765         an rgctx.
10766
10767         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10768         instrument_prolog. Fixes #419878.
10769
10770         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10771         doubles in soft float mode volatile.
10772
10773 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10774
10775         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10776
10777         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10778         to handle soft float correctly.
10779
10780         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10781         the fast path.
10782
10783         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10784
10785         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10786         to sp, since the generics catch code requires it.
10787
10788         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10789         copying.
10790
10791         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10792         mono_arch_emit_imt_argument ().
10793
10794         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10795
10796         * mini-arm.c tramp-arm.c: Generic sharing updates.
10797
10798 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10799
10800         * mini-arm.c: Fix the arm build.
10801
10802         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10803         handling enums, generic instances and generic sharing.
10804         (mini_type_stack_size_full): Ditto.
10805
10806         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10807         
10808         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10809
10810         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10811
10812         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10813         trampolines.
10814
10815         * mini-arm.c: Various small generic sharing changes.
10816
10817         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10818         this for x86.
10819         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10820         custom code.
10821
10822         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10823         helper function to return a generic class init trampoline.
10824
10825         * method-to-ir.c mini.c: Use it.
10826         
10827         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10828         arch-specfic function to return a generic class init trampoline.
10829
10830         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10831         the GENERIC_CLASS_INIT custom code.
10832
10833         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10834         a fatal error, not a sharing failure.
10835
10836         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10837         needed.
10838
10839         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10840         trampoline argument from MONO_ARCH_VTABLE_REG.
10841
10842         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10843         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10844         argument, and pass the vtable in VTABLE_REG.
10845
10846         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10847         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10848         argument, and pass the vtable in VTABLE_REG.
10849         (mono_arch_create_trampoline_code_full): Remove some special casing for
10850         the rgctx fetch trampoline.
10851
10852         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10853         Fixes #419273.
10854
10855         * iltests.il: Add a test for it.
10856
10857 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10858
10859         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10860
10861         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10862         no longer needed.
10863
10864         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10865         use mono_jit_info_table_find () to avoid recursion.
10866         (mono_delegate_trampoline): Add a sync wrapper here.
10867
10868         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10869         here.
10870
10871         * mini.c (mono_method_to_ir): Ditto.
10872         
10873         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10874         add_sync_wrapper argument. Don't add a sync wrapper here.
10875         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10876
10877         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10878         
10879 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10880
10881         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10882           of nonvolatile registers back from MonoContext to CONTEXT.
10883
10884         Contributed under MIT/X11 license.
10885
10886 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10887
10888         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10889           arguments on Winx64 there are only 4 argument registers.  For this
10890           logic to work the last argument must be pulled from the stack.  
10891
10892         Contributed under MIT/X11 license.
10893
10894 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10895
10896         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10897
10898         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10899         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10900         encode/decode_method_ref ().
10901
10902         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10903
10904         * aot-runtime.c (decode_patch): Ditto.  
10905
10906         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10907         MONO_PATCH_INFO_METHOD.
10908
10909         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10910         MonoGenericJitInfo.
10911
10912         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10913         MonoGenericJitInfo.
10914
10915         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10916
10917         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10918         one from the caller.
10919
10920         * aot-runtime.c (decode_generic_inst): New function to decode and
10921         return a interned generic inst.
10922         (decode_klass_ref): Use it.
10923         (decode_method_ref): Ditto.
10924
10925         * aot-compiler.c (emit_exception_debug_info): Save 
10926         jinfo->has_generic_jit_info too.
10927
10928 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10931
10932         * iltests.il.in: Add a test for fconv_to_i.
10933
10934         * liveness.c: Disable the liveness2 pass for now to save space.
10935
10936         * regalloc2.c: Include mempool-internals.h to fix warnings.
10937
10938         * aot-compiler.c (encode_method_ref): Encode the context of generic
10939         instance methods.
10940
10941         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10942         the context saved in the aot file.
10943
10944         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10945
10946         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10947
10948         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10949         volatile so they won't be optimized away.
10950
10951 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10952
10953         * ssa.c:
10954         * ssa2.c:
10955         * mini.c:
10956         * regalloc2.c:
10957         * dominators.c: Remove duplicated functions that now are in
10958         mempool-internals.h.
10959
10960 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * aot-compiler.c: Fix warnings.
10963
10964         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10965
10966         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10967
10968         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10969         as the patch type.
10970
10971         * mini.c (mono_resolve_patch_target): Ditto.
10972         
10973         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10974         (encode_klass_ref): Add support for encoding VARs/MVARs.
10975
10976         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10977
10978         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10979         the handling of the got entries into a separate 'decode_got_entry' function.
10980         Add support for RGCTX_FETCH.
10981
10982         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10983         clobbered by the trampoline code.
10984
10985         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10986         not clobbered by the indirect calling code.
10987
10988 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10991         to fix the build.
10992
10993 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10994
10995         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10996         signature using the compilation mempool otherwise we would leak it.
10997
10998 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11001         mono_emit_abs_call ().
11002
11003         * patch-info.h: Add GENERIC_CLASS_INIT.
11004
11005         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11006
11007         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11008         as their target as a near call.
11009
11010         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11011         ABS handling code.
11012         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11013
11014         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11015         call to a runtime function described by a patch.
11016
11017         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11018         mono_emit_abs_call, this has the advantage that the ABS handling code in
11019         mono_codegen () can handle them both, and can handle other stuff in the
11020         future without additional code.
11021
11022         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11023         entry.
11024         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11025         abs addresses.
11026
11027         * mini.h: Add missing bblock related prototypes.
11028
11029         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11030         reverse_inst_list_len fields.
11031
11032         * mini.c: Refactor this file a bit by moving branch optimizations to 
11033         branch-opts.c.
11034
11035         * method-to-ir.c: Merge generic sharing changes missed earlier.
11036
11037         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11038
11039         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11040         shared patches. Process METHODCONST as a shared patch.
11041
11042         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11043         as it crashes on the 2.0 mscorlib.
11044
11045         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11046         to cause crashes.
11047         
11048         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11049         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11050         by IMT.
11051
11052         * aot-compiler.c: Reorganize the got handling code to be a bit more
11053         understandable.
11054
11055 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11058         mono_patch_info_equals/hash, and use it to massively simplify
11059         get_plt_index ().
11060
11061         * mini.c (mono_patch_info_hash): Simplify this and add support for
11062         more patch types.
11063
11064         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11065
11066         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11067         handling code, since an offset is not enough to identify a trampoline.
11068
11069         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11070
11071 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11072
11073         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11074
11075         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11076
11077         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11078
11079         * decompose.c: PPC decompositions for various ops.
11080
11081         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11082
11083 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11086         call the generic trampoline code using a call, instead of a jump, to
11087         remove some special casing from the generic trampoline code.
11088
11089         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11090         (mono_codegen): Ditto.
11091
11092         * aot-compiler.c aot-runtime.c: Ditto.
11093
11094         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11095
11096         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11097         helper function to find the offset corresponding to a lazy fetch trampoline.
11098
11099         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11100         when doing generic sharing.
11101
11102         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11103         places.
11104         
11105         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11106         mini-trampolines.c to be with the other trampoline creation functions.
11107
11108         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11109         as it is equal to method->signature in most cases, add a 
11110         mono_emit_method_call_full variant which takes a signature and an imt
11111         argument as well.
11112
11113 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11114
11115         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11116         to this function, since it could be computed easily from the method 
11117         argument.
11118         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11119         more.
11120
11121         * method-to-ir.c mini.c: Remove references to 
11122         compile_generic_method_wo_context.
11123
11124         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11125         generic method calls.
11126         
11127         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11128         dimensional non-szarrays.
11129
11130         * mini.c (mini_init): Register mono_array_new_1.
11131
11132         * jit-icalls.c (mono_array_new_1): New jit icall.
11133
11134         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11135         pointing to the method.
11136
11137         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11138         method addresses belonging to METHOD_JUMP patches in the 
11139         jump_target_got_slot_hash.
11140         (mono_aot_load_method): Ditto.
11141
11142         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11143         METHOD_JUMP patches.
11144
11145         * mini.c (mini_create_jit_domain_info): New helper function which 
11146         initializes/frees domain->runtime_info.
11147         (mini_free_jit_domain_info): Ditto.
11148         (mini_init): Install the domain hook functions with the runtime.
11149
11150         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11151         information maintained by the JIT.
11152
11153         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11154         insertion into jump_table_hash into mono_codegen (), also implement proper
11155         locking.
11156
11157         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11158         tail calls, it is already done by the aot code.
11159         
11160         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11161         mechanism on amd64.
11162
11163         * iltests.il.in: Make the jmp test a bit more complex.
11164
11165         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11166         generic instances which doesn't have a token.
11167
11168         * aot-runtime.c (decode_method_ref): Ditto.
11169         
11170         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11171         can handle this case now.
11172         (handle_box): Ditto.
11173
11174 2008-08-15  Geoff Norton  <gnorton@novell.com>
11175
11176         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11177         debugging check.
11178
11179 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11180
11181         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11182         calling generic methods.
11183
11184         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11185
11186         * aot-runtime.c (decode_patch_info): Ditto.
11187
11188         * mini.c (mono_resolve_patch_target): Ditto.
11189         
11190         * patch-info.h: Add METHOD_RGCTX.
11191
11192         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11193
11194 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11197         arguments in registers.
11198
11199         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11200         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11201
11202         * mini.c (mini_method_compile): Abort aot compilation for generic
11203         methods if generic sharing is disabled.
11204         
11205         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11206         an mrgctx.
11207
11208         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11209         requiring an mrgctx.
11210
11211         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11212         store instructions when converting a vcall to a normal call.
11213
11214         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11215         mono_arch_find_jit_info.
11216
11217 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11220         avoid calling mono_method_full_name () for every method even if the
11221         env var is not set.
11222         (check_inline_caller_method_name_limit): Ditto.
11223
11224 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11225
11226         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11227         assemblies in one run.
11228
11229         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11230         skipped methods if it is not 0.
11231
11232         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11233
11234 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11235
11236         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11237           MONO_ARCH_HAVE_UNWIND_TABLE.
11238
11239         Contributed under MIT/X11 license.
11240
11241 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11242
11243         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11244           from default optimizaton list on Winx64.
11245
11246         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11247
11248         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11249           the LMF from the MonoJitTlsData structure.
11250
11251         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11252
11253         Contributed under MIT/X11 license.
11254
11255 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * mini.c (sigsegv_signal_handler): Fix the build.
11258
11259         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11260         assembly->aot_module.
11261
11262         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11263         hash table. This simplifies and speeds up a lot of code, and fixes support
11264         for .netmodules.
11265
11266         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11267         with the runtime.
11268
11269         * mini-exceptions.c: Ditto.
11270         
11271         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11272         'native_offset' argument, since these are computed in the 
11273         mono_find_jit_info () function.
11274
11275         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11276         is used by exceptions-ppc.c.
11277
11278         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11279         mono_arch_find_jit_info ().
11280         
11281         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11282         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11283         generic code in mini-exceptions.c.
11284
11285 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11286
11287         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11288
11289         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11290         
11291         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11292         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11293         called while holding the loader lock. Fixes #415608.
11294         (mono_aot_get_method_from_token_inner): Ditto.
11295
11296 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11299         to reduce differences between this and the generic implementation in
11300         mini-exceptions.c.
11301         (ves_icall_get_frame_info): Ditto.
11302
11303         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11304
11305         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11306         longer neccesarry.
11307
11308         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11309         mono_arch_get_call_filter () and make it non-static, for consistency with the
11310         other architectures.
11311
11312 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11313
11314         * mini.c:
11315         * local-propagation.c:
11316         * mini-x86.c: Correct the name of arch defines.
11317
11318 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11321         NO_EMULATE_LONG_SHIFT_OPS define.
11322
11323 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11324
11325         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11326         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11327
11328         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11329         MACH fixes. Merged from the 2.0 branch.
11330
11331         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11332
11333         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11334         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11335
11336         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11337
11338         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11339         mono_marshal_get_native_wrapper () signature changes.
11340
11341 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11342
11343         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11344         conversion bug under arm.
11345
11346 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11347
11348         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11349
11350         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11351         with overflow checking.
11352
11353 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11354
11355         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11356         to the genmdesc.pl file
11357
11358 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11359
11360         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11361         arg_array in the soft-float versions of the LOAD/STORE macros.
11362
11363         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11364         implementation.
11365
11366         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11367
11368 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11369
11370         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11371         a float HFA. Fixes #413621.
11372
11373 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11374
11375         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11376         frame_size to args_size. Fixes build.
11377
11378 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11379
11380         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11381         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11382
11383         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11384         the stack are not unaligned. Fixes #413247.
11385         
11386 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11387
11388         * mini.c: update jitted methods performance counters.
11389
11390 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11391
11392         * mini-exceptions.c: increase the exceptions thrown performance
11393         counter in mono_handle_exception ().
11394
11395 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11398         can work with netmodules.
11399
11400 2008-07-28  Geoff Norton  <gnorton@novell.com>
11401
11402         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11403         regression tests.
11404
11405 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11408         correct place.
11409
11410 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11411
11412         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11413           The float param registers and other param registers must be the 
11414           same index on Windows x64.
11415
11416         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11417           ArgValuetypeAddrInIReg argument case.  Setting the argument
11418           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11419
11420         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11421           variable computed above as the copy length for arguments of storage
11422           type ArgValuetypeAddrInIReg.
11423
11424         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11425           ArgValuetypeAddrInIReg argument case.  This case will rely on
11426           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11427
11428         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11429           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11430           jump and tail call instructoins as they do not follow the typical call behavior.
11431
11432         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11433           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11434           local variable and pass the local variable by reference to the called method.
11435
11436         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11437           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11438           of a struct is passed in a register it must be saved with the other
11439           volatile argument on the stack.
11440
11441         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11442           frame pointer the stack adjustment value must be saved to the unwind 
11443           info structure.
11444
11445         Contributed under MIT/X11 license.
11446
11447 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11450         which got lost in the merge.
11451
11452 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11453
11454         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11455         build.
11456
11457         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11458         
11459         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11460         icalls, since they won't be patched.
11461
11462         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11463         different code sequence when running under valgrind to prevent some valgrind
11464         errors.
11465
11466         * iltests.il.in: Add new regression test.
11467
11468         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11469         end with a throw.
11470
11471         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11472         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11473
11474         * iltests.il.in: Add new test.
11475
11476         * aot-compiler.c: Fix some warnings.
11477
11478         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11479         Fixes #412494.
11480
11481 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11484         (mini_usage_jitdeveloper): Add a missing --wapi option.
11485
11486 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * mini-codegen.c: Simplify the is_fp macros.
11489         (free_up_ireg): Remove, use free_up_reg instead.
11490         (free_up_reg): Fix the fp case.
11491
11492 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11493
11494         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11495         lowered earlier.
11496
11497         * exceptions-x86.c: Merge some changes which seemed to have got lost
11498         in the linear-ir merge.
11499
11500         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11501
11502         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11503         long vreg volatile even if the variable was already created.
11504
11505         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11506         volatile variables.
11507
11508 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11509
11510         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11511
11512         * mini.c (mono_jit_compile_method_inner): Add support for 
11513         MONO_EXCEPTION_BAD_IMAGE.
11514
11515         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11516         mini_method_get_context () returns NULL. Fixes #356531.
11517
11518         * mini.c (mono_method_to_ir): Ditto.
11519         
11520         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11521         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11522
11523 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11524
11525         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11526         in the LDFTN implementation.
11527
11528 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11529
11530         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11531         code, patch calls to icalls, too, even if they're not in the
11532         shared generic code hash.  Fixes #411962.
11533
11534 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11535
11536         * cpu-x86.md: Increase the length of the fcall opcodes.
11537
11538         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11539         calls returning floats.
11540
11541         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11542         on NEWARR.
11543         
11544         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11545         missed earlier.
11546
11547         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11548         into the domain->method_code_hash.
11549
11550         * aot-compiler.c: Fix win32 build.
11551
11552         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11553         
11554         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11555         gshared NEWARR implementation.
11556
11557         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11558
11559         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11560         can be used outside of method_to_ir.
11561
11562         * mini.h (MonoCompile): Add arg_types field.
11563
11564         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11565         
11566         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11567         the values of the local arg_array and param_types array.
11568
11569 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11570
11571         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11572         got accesses might only get generated later when NEWOBJ is decomposed.
11573         
11574         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11575         looking up the native code of the target method when a delegate is called
11576         for the first time.
11577
11578         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11579         optimization.
11580
11581         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11582
11583         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11584         AOT work on platforms without a working dlsym implementation.
11585
11586         * mini.h: Bump AOT image format version.
11587         
11588 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11589
11590         * mini-exceptions.c: Free a MonoType with
11591         mono_metadata_free_type() instead of g_free().
11592
11593         * aot-runtime.c: Free a MonoType.
11594
11595 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11596
11597         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11598         optimization.
11599
11600         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11601         fp stack on x86.
11602
11603 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11604         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11605         profiler hook.
11606
11607 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11610         NEWOBJ calls on valuetypes.
11611
11612         * iltests.il.in: Add new test.
11613
11614         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11615
11616 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11617
11618         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11619         is no longer needed.
11620
11621         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11622         non register sized integer arguments.
11623         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11624         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11625         emit_memcpy2 ().
11626
11627         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11628         CEE_MONO_RETOBJ.
11629         
11630         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11631         two a binop with different sized arguments is emitted.
11632
11633         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11634         instruction in the ins==NULL case.
11635
11636 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11639
11640         * mini-x86.c: Fix osx build.
11641
11642         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11643         opcodes as well.
11644
11645         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11646         instruction for non int sized variables.
11647
11648         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11649         implementation.
11650
11651 2008-07-23  Robert Jordan  <robertj@gmx.net>
11652
11653         * method-to-ir.c: Fix MSVC build.
11654
11655 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11656
11657         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11658         a non int sized type, widen it to an int since newer versions of gcc seem to
11659         generate code which needs this.
11660
11661         * ssa2.c abcremoval2.c: Fix warnings.
11662
11663         * *: Merge the Linear IR branch.
11664
11665         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11666         the ChangeLog file there describes all the changes done over the years. 
11667         Further documentation can be found at www.mono-project.com/Linear_IL.
11668
11669 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11670
11671         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11672           The float param registers and other param registers must be the 
11673           same index on Windows x64.
11674
11675         Contributed under MIT/X11 license.
11676
11677 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11678
11679         * mini.c: Make the previous fix GC safe.
11680
11681 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11682
11683         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11684
11685 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11686
11687         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11688           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11689           ArgValuetypeAddrInIReg instead.
11690
11691         Contributed under MIT/X11 license.
11692
11693 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11694
11695         * mini-codegen.c (get_register_spilling): Fix a warning.
11696
11697 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11698
11699         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11700         for types which the initialization fails. Raises the provided exception
11701         at the right stop after cleanup.
11702
11703 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * aot-compiler.c: Free most of the memory allocated during compilation.
11706
11707         * mini.c (mini_parse_debug_options): Fix a leak.
11708         
11709         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11710         during aot compilation.
11711
11712 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11715         it has too much register pressure.
11716
11717 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11718
11719         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11720
11721 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11724         on x86.
11725
11726         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11727         on amd64 similar to the way it is done on arm.
11728
11729         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11730
11731         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11732         consistency, normalize error messages, avoid loading aot-only modules in
11733         normal mode.
11734
11735         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11736         for consistency.
11737
11738         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11739
11740 2008-07-11  Martin Baulig  <martin@ximian.com>
11741
11742         * debug-debugger.h
11743         (MonoDebuggerInfo): Add `interruption_request'.
11744
11745 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11746
11747         * aot-compiler.c (emit_plt): Remove some dead code.
11748
11749         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11750
11751         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11752         return the plt info offset belonging to a given plt entry.
11753
11754         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11755         mono_aot_get_plt_info_offset.
11756         
11757         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11758         similar to the amd64 code by makeing jumps through a separate jump table 
11759         instead of embedding the jump addresses into the code.
11760
11761 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11762
11763         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11764         method.
11765
11766 2008-07-10  Martin Baulig  <martin@ximian.com>
11767
11768         * mini.c (mini_method_compile): Disable generics sharing when
11769         running in the debugger.
11770
11771 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11772
11773         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11774
11775         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11776         the local register allocator from running out of registers on x86 when 
11777         using aot.
11778
11779 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11780
11781         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11782         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11783         C4146.
11784
11785         Contributed under MIT/X11 license.
11786
11787 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11788
11789         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11790         speed up the assembler.
11791
11792 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11793
11794         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11795         support.
11796
11797         * mini.c: Move the soft float handling macros a bit earlier, add 
11798         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11799         place.
11800
11801         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11802
11803         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11804         read-only to help catch code allocation requests.
11805         
11806         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11807         and turn it off when using --aot-only or when compiling with --aot=full.
11808
11809         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11810         jump table for switches from the normal domain mempool, not the code
11811         manager.
11812
11813         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11814         unbox trampoline which handles aot-only mode too.
11815
11816         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11817         an AOTed unbox trampoline.
11818
11819         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11820
11821 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11822
11823         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11824         ""
11825
11826         Contributed under MIT/X11 license.
11827
11828 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11829
11830         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11831           the unwind information for the method at the end of the allocated block.
11832           
11833         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11834           MonoCompileArch to hold the unwind info for SEH on Winx64
11835         
11836         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11837           frame pointer info for the method being compiled.
11838           
11839         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11840           the call to mono_exception_from_token.
11841           
11842         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11843           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11844           information is stored a the end of the method block because it is all 32-bit offset based.
11845
11846         Contributed under MIT/X11 license.
11847
11848 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11851
11852         * wapihandles.c: Fix warnings.
11853
11854         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11855         mode.
11856
11857         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11858         mono_jit_compile_method in aot-only mode since that calls the type 
11859         initializer.
11860         
11861         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11862         get_delegate_invoke_impl in aot-only mode.
11863
11864         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11865
11866 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11869
11870         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11871         is on by default.
11872
11873         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11874
11875         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11876         init trampoline from the AOT file as well.
11877
11878         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11879         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11880         code.
11881
11882         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11883         mono_init.
11884
11885         * exceptions-amd64.c: Add _full variants for the remaining exception code
11886         creation functions as well, allow emission of relocatable code, remove
11887         caching since that is now done by the caller.
11888
11889         * mini-exceptions.c: Add _full variants for the remaining exception code
11890         creation functions as well, add aot-only support.
11891
11892         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11893         if we can determine a proper token for them.
11894         (add_wrappers): Add a few more wrappers.
11895         (emit_method_code): Remove some dead code.
11896         (emit_trampolines): Emit exception code too.
11897
11898         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11899
11900         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11901         mono_array_new_va which avoids varargs.
11902
11903         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11904
11905         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11906         mono_arch_create_specific_trampoline () in all places.
11907
11908         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11909         a bit so it can be used for other things as well.
11910         
11911         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11912         on demand as well.
11913
11914         * exceptions-amd64.c: Rename the caching from the exception code creation
11915         functions, it is done by the caller instead.
11916         
11917         * exceptions-amd64.c: Change the signature of the exception code creation 
11918         functions to allow the creation of relocatable code later.
11919
11920         * mini-exceptions.c: Add a set of functions to query the various 
11921         runtime-generated exception functions.
11922
11923         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11924         mono_arch_.. () functions.
11925         
11926 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11929
11930         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11931
11932         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11933         (mini_get_vtable_trampoline): Ditto.
11934
11935         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11936         code in the AOT case by returning the code size and a list of relocations to
11937         the caller.
11938
11939         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11940
11941 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11942
11943         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11944           clean the stack.
11945
11946         Contributed under MIT/X11 license.
11947
11948 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11949
11950         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11951         so the buffer size can be computed correctly. Fixes #404735.
11952
11953         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11954         normally as cfg->debug_info is already freed.
11955
11956 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11957
11958         * mini-amd64.c: For calls returning vtypes in registers, don't store
11959         the return address on the stack, instead allocate a separate local for
11960         it. Fixes #404729.
11961
11962 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11963
11964         * mini-trampolines.c, mini.h: Add an argument to
11965         mono_create_jit_trampoline_in_domain() for turning off the adding
11966         of the sync wrapper.
11967
11968         * mini.c: Use the JIT trampoline without sync instead of
11969         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11970         be patched.
11971
11972 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11973
11974         * driver.c: Turn on GSHARED optimization by default.
11975
11976 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11977
11978         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11979         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11980
11981         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11982         create a variant of the generic trampoline code callable from AOTed trampolines.
11983
11984         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11985         trampoline code callable from AOTed trampolines.
11986
11987         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11988
11989 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11990
11991         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11992         pass-through manner.
11993
11994         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11995         and don't fail sharing for them anymore.
11996
11997         * mini-exceptions.c: Handle exceptions in shared generic methods.
11998
11999         * generic-sharing.c: When checking the context of a generic
12000         method, also check its class's context.  Don't treat wrappers as
12001         sharable.
12002
12003         * mini-trampolines.c: Some code factored out to
12004         metadata/generic-sharing.c.  Handle the MRGCTX case.
12005
12006         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12007         we must deal with the method being of another instantiation of the
12008         class.  Add static rgctx invoke wrappers to generic methods.
12009
12010 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12011
12012         * mini.c: Provide all jit infos of generic shared methods with a
12013         generic jit info.
12014
12015         * mini-exceptions.c: Handle the new situation that a generic info
12016         might be available, but not info about the this/vtable/mrgctx
12017         variable.
12018
12019 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12020
12021         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12022         generic methods.
12023
12024 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * dominators.c (check_dominance_frontier): Fix a warning.
12027
12028         * mini.h: Add some missing prototypes.
12029
12030         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12031
12032         * driver.c (mono_jit_init_version): Correct the comments since the first
12033         argument should be the name of the root domain, not a filename.
12034
12035         * aot-runtime.c (make_writable): Error out if this is called while running
12036         with --aot-only.
12037         (load_aot_module): Ditto.
12038
12039         * aot-compiler.c: Really fix the computation of method indexes.
12040
12041         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12042         optimizations as this is no longer called frequently.
12043
12044         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12045         method and the invoke impl code and pass it to the delegate trampoline instead of
12046         just the delegate class.
12047
12048 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12049
12050         * aot-compiler.c: Fixup the computation of method indexes.
12051         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12052         the method builder infrastructure.
12053
12054         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12055         has no header.
12056
12057         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12058         mode, load the method right away instead of creating a trampoline.
12059
12060         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12061
12062         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12063         some checks a bit.
12064
12065 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12066
12067         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12068         (mono_aot_load_method): Use method_index instead of method->token.
12069
12070         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12071         can handle icalls etc. properly.
12072
12073         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12074
12075         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12076
12077         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12078         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12079         JIT_ICALL_ADDR patch type.
12080
12081         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12082
12083         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12084         request flag.
12085         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12086
12087         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12088
12089 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12092         domain->jit_code_hash.
12093
12094 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12097
12098 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12101         get_this_arg_from_call, let it compute it when needed.
12102
12103         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12104         gsctx from code only when needed.
12105
12106         * mini-trampolines.c (get_generic_context): Rename this to 
12107         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12108         it can be called by the arch backends.
12109
12110         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12111
12112 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12113
12114         * driver.c (mono_main): Add experimental --aot-only command line option.
12115
12116         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12117         set.
12118
12119 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12120
12121         * driver.c (DllMain): Remove mono_module_handle.
12122
12123         Contributed under MIT/X11 license.
12124
12125 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12128         for emitting methods which are not in the source assembly. Detect and report
12129         failure of assembling+linking.
12130         
12131         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12132
12133         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12134
12135 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12136
12137         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12138
12139 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12140
12141         * mini.h: Remove some obsolete prototypes.
12142
12143         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12144
12145 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12146
12147         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12148         supported by Visual Studio, so use alloca().
12149
12150 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12151
12152         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12153         Fixes #402585.
12154
12155 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12156
12157         * mini.c: Fail sharing of a generic method if it contains an open
12158         catch clause (because we don't pass MRGCTXs yet).
12159
12160 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12161
12162         * mini.c: When compiling a method with generic sharing, insert the
12163         method instantiated with an all-Object generic context into the
12164         jit info table, instead of the context of the first instantiation
12165         of the method we happen to compile.
12166
12167 2008-06-18  Martin Baulig  <martin@ximian.com>
12168
12169         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12170         `major_version' and `minor_version'.
12171
12172 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12173
12174         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12175         mono_method_is_generic_sharable_impl() takes an additional
12176         argument specifying whether to treat type variables as reference
12177         types.
12178
12179 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12180
12181         * mini.h: Removed obsolete prototypes.
12182
12183 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12184
12185         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12186         already handle them.
12187
12188 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12189
12190         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12191         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12192         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12193         tramp-x86.c: Added a MonoGenericContext* argument to
12194         mono_arch_get_unbox_trampoline() so that it can call other
12195         functions which require it.
12196
12197 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12198
12199         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12200         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12201         mono_arch_get_this_arg_from_call() takes a
12202         MonoGenericSharingContext* as well.
12203
12204 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12205
12206         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12207         implement generic sharing of unbox.
12208
12209 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12210
12211         * mini.c: Don't compute the vtable to determine whether a field is
12212         special static, because it might not work for open types.
12213
12214 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12215
12216         * mini.c: Removed the unused token_type and token_source arguments
12217         from get_runtime_generic_context_ptr().
12218
12219 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12220
12221         * mini.c (ADD_BINOP): fix the build
12222
12223 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12224
12225         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12226         a widening op.
12227
12228 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12229
12230         * mini.h: Removed class relations enum that's not used anymore.
12231
12232 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12233
12234         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12235
12236         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12237         the lazy fetch trampoline access code.
12238
12239 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12242
12243 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12246
12247         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12248
12249         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12250
12251 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12252
12253         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12254         intrinsics.
12255
12256         * mini-ops.h: Add MIN/MAX_UN opcodes.
12257
12258         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12259         intrinsics.
12260
12261         * basic-math.cs: Add more min/max tests.
12262
12263         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12264
12265 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12266
12267         * mini.c: Small fix in the prologue of emit_castclass.
12268
12269 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12272
12273         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12274         do not work even for unsigned types. Fixes #400014.
12275
12276         * basic-math.cs: Add regression tests for unsigned Min/Max.
12277
12278 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12279
12280         * mini.c: Added additional context_used argument to several
12281         functions, which will be needed for sharing generic methods.  Use
12282         GET_RGCTX macro wherever appropriate.  Declare only one
12283         context_used in mono_method_to_ir().
12284
12285 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12286
12287         * mini.c, generic-sharing.c: Removed generic class relations.
12288
12289         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12290         functions due to MRGCTX changes.
12291
12292 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12293
12294         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12295         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12296         with calculated IMT.
12297
12298         * mini.c: Generic sharing of calls via generic interfaces.
12299
12300         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12301         generic method with non-constant MonoGenericContext*.  Instead,
12302         the context is taken out of the method itself.
12303
12304 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12305
12306         * mini.c: Generic sharing of ldvirtftn.
12307
12308 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12309
12310         * mini.c: Generic sharing of ldftn.
12311
12312 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12313
12314         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12315
12316 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12317
12318         * mini.c: Generic sharing of the special case of ldtoken followed
12319         by a call to GetTypeFromHandle.
12320
12321 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12322
12323         * mini.c: Generic sharing of box for nullable types.
12324
12325 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12328         are passed on the stack. Fixes #324807.
12329
12330 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12331
12332         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12333         for the ArgValuetypeAddrInIReg case.
12334
12335         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12336         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12337
12338         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12339         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12340         local variable and pass the local variable by reference to the called method.
12341           
12342         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12343         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12344
12345         Contributed under MIT/X11 license.
12346
12347 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12348
12349         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12350
12351         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12352         everything.
12353
12354 2008-06-10  Martin Baulig  <martin@ximian.com>
12355
12356         * debug-mini.c
12357         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12358
12359 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12360
12361         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12362         possible error when no arguments are passed.
12363
12364         Contributed under MIT/X11 license.
12365
12366 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12367
12368         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12369         where the file name is NULL.
12370
12371 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * mini.c: Fix s390 build.
12374
12375 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * trace.c (mono_trace_parse_options): Fix warnings.
12378
12379         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12380
12381 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * mini.c (remove_block_if_useless): Avoid printing the method name.
12384         
12385         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12386         MONO_INST_NEW.
12387
12388         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12389         LMF. Not yet used.
12390
12391         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12392         translated code after it has been patched.
12393
12394 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12397         avoid problems during code patching on SMP systems.
12398         (emit_call): Avoid adding a patch info which is already added by 
12399         emit_call_body.
12400         (mono_arch_emit_exceptions): Ditto.
12401
12402 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12403
12404         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12405         MONO_TYPE_ISSTRUCT already checks for it.
12406
12407 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12408
12409         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12410           structs with floats on Winx64 the float registers are not used.  
12411           The integer registers are always used..
12412         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12413           only one register will be used and only if the size of the struct 
12414           is 1,2,4, or 8 bytes.
12415
12416         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12417           to work for Winx64.
12418
12419         Contributed under MIT/X11 license.
12420
12421 2008-06-05  Martin Baulig  <martin@ximian.com>
12422
12423         * debug-debugger.c (debugger_lookup_class): Also call
12424         mono_class_setup_methods() here; we're only called from RTI.
12425
12426 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12427
12428         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12429         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12430         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12431         Post-process object files and add dtrace-generated object, if necessary.
12432
12433         Contributed under MIT/X11 license.
12434
12435 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12436
12437         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12438         element class.
12439
12440         * mini.c: Generic sharing for unbox.any and castclass.
12441
12442 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12443
12444         * mini.c: Ignore tailcall prefix in shared generic code and when
12445         doing calls which require a vtable/rgctx argument.
12446
12447 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12448
12449         * mini.c: Don't free the JIT info.
12450
12451         * driver.c: Changes in the JIT info table testing code.
12452
12453 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12456         interruption. Fix some warnings.
12457
12458         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12459         interruption_checkpoint.
12460
12461 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12462
12463         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12464         from embedding applications.
12465
12466 2008-06-02  William Holmes  <billholmes54@gmail.com>
12467
12468         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12469           reserving 32 bytes on the stack when making calls. 
12470
12471         Contributed under MIT/X11 license.
12472
12473 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12474
12475         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12476         the linear IL branch.
12477
12478         * driver.c: Print out more information for --version on arm.
12479
12480 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12481
12482         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12483         bb_exit instead, since out of line bblocks might not actually be emitted
12484         out-of-line.
12485         
12486         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12487         maximum epilog size for out of line bblocks if tracing is enabled.
12488
12489         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12490
12491 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12492
12493         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12494
12495 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12496
12497         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12498         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12499         opcodes.
12500
12501 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12502
12503         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12504         the 'value' to store is a constant.
12505
12506         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12507
12508         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12509         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12510
12511 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12512
12513         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12514         for accessing method->generic_container.
12515
12516 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12519         
12520         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12521
12522         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12523
12524         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12525         fails.
12526
12527 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12530
12531         * mini.c: Handle the case when mono_class_vtable () fails.
12532
12533 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12534         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12535         the stat profiler.
12536
12537 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12538
12539         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12540         together with domain sharing.
12541
12542 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12543
12544         * mini.c: Treat callvirts to final methods like non-virtual calls
12545         when doing generic sharing, i.e. look them up in the runtime
12546         generic context.
12547
12548 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12549
12550         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12551         with computed types (for generic sharing).
12552
12553         * mini.c: Generic sharing for mkrefany and refanyval.
12554
12555 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12558         possible.
12559
12560         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12561         the generic sharing code.
12562         
12563         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12564         when needed.
12565
12566 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12567
12568         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12569
12570 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12571
12572         * driver.c: updated copyright date
12573
12574 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12575
12576         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12577         needed.
12578
12579 2008-05-19  Martin Baulig  <martin@ximian.com>
12580
12581         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12582         pointing to the new `_mono_debug_using_mono_debugger' variable.
12583
12584         * driver.c
12585         (mono_main): Check mono_debug_using_mono_debugger() rather than
12586         the `MONO_INSIDE_MDB' environment variable to check whether we're
12587         inside the debugger.
12588
12589 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12592         argument.
12593
12594 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12595
12596         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12597
12598         * mini.c: Added mini_assembly_can_skip_verification. This
12599         function checks if the assembly requested to skip verification. 
12600         Fixes part of #387274.
12601
12602 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12603
12604         * mini.c (mini_get_method): Disable the check for open generic classes when
12605         using generic sharing.
12606
12607         * generics.cs: Add a test for #387034.
12608
12609         * mini.c (mini_get_method): Check whenever the method class is an open generic
12610         type, and return NULL in that case, causing a verification error. Fixes
12611         #384123.
12612
12613 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12614
12615         * driver.c (mono_main): Revert r102623. The right
12616         thing to do is to enable the verifier under verifiable
12617         unless a --security flag was passed.
12618
12619         We need this non-trivial behavior for --verify-all otherwise
12620         mcs-compileall won't be able to use it. As it needs everything to
12621         be verified under validil.
12622
12623 2008-05-06  Martin Baulig  <martin@ximian.com>
12624
12625         Fix #383749.
12626
12627         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12628         (mono_debugger_thread_cleanup): Likewise.
12629         (mono_debugger_extended_notification): Likewise.
12630
12631 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12632
12633         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12634         against both inflated and non-inflated methods. We need to check against the
12635         generic definition for cases where the instantiated method is not visible.
12636         We need to check against the inflated types for cases where the instantiation
12637         changes any super type. This fixes #382986.
12638
12639         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12640         that check for visibiliy as generic params only appears as the type subject
12641         of tokens on call opcodes. Field manipulation and ldftn must always
12642         target an exact type.
12643
12644 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12645
12646         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12647         if no related --security flag is passed.
12648
12649 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12650
12651         * mini-arch.h: Prepare support for ppc64.
12652
12653         Contributed under MIT/X11 license.
12654
12655 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12656
12657         * aot-runtime.c: Prepare support for ppc64.
12658
12659         Contributed under MIT/X11 license.
12660
12661 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12662
12663         * mini-ops.h: Prepare support for ppc64.
12664
12665         Contributed under MIT/X11 license.
12666
12667 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12668
12669         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12670
12671         Contributed under MIT/X11 license.
12672
12673 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12674
12675         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12676         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12677         assemblies on windows.
12678
12679 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12680
12681         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12682         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12683         * main.c: Use UTF-8 encoded command line instead of Windows default code
12684         page on Windows to support Unicode.
12685         * driver.c (DllMain): New function for mixed-mode assembly support.
12686         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12687         export __stdcall functions without decoration.
12688
12689         Contributed under MIT/X11 license.
12690
12691 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12692
12693         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12694         saving it very early.
12695
12696 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12697
12698         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12699         deleted.  The only way to access the new RGCTX is via the
12700         trampline.
12701
12702         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12703         vtable instead of the RGCTX to static methods.
12704
12705         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12706         accessing the new RGCTX.
12707
12708         * generic-sharing.c: There is no separation between self, type
12709         arguments and other types in the RGCTX anymore.
12710
12711 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12712
12713         * mini-amd64.c (add_general): Remove previous stack adjustment.
12714         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12715         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12716         for 32 bytes of stack space reserved for all calls.
12717         
12718         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12719         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12720         adjustment.
12721         
12722         Code contributed under MIT/X11 license.
12723
12724 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12725
12726         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12727         against the root definition, peeling out method and type instantiations.
12728         Cache verify success results, code that fails verification is still
12729         checked multiple times.
12730
12731 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12734
12735 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12736
12737         * mini-amd64.c (add_general): Always increment stack on Win64.
12738         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12739         on Win64.
12740         
12741         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12742         stack based argument handling on Win64.
12743         
12744         Code contributed under MIT/X11 license.
12745
12746 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12747
12748         * Makefile.am (version.h): Add support for git-svn.
12749
12750 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12753         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12754         avoiding allocations and libc functions which might deadlock.
12755         
12756         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12757         'no-gdb-backtrace' option is set.
12758
12759         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12760
12761         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12762
12763 2008-04-21  Martin Baulig  <martin@ximian.com>
12764
12765         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12766         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12767
12768 2008-04-21  Martin Baulig  <martin@ximian.com>
12769
12770         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12771         `thread_vtable', `event_handler_ptr' and `event_handler'.
12772
12773 2008-04-21  Martin Baulig  <martin@ximian.com>
12774
12775         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12776         allows delayed initialization of the `executable_code_buffer' when
12777         attaching.
12778
12779 2008-04-21  Martin Baulig  <martin@ximian.com>
12780
12781         * mini.h (mono_debugger_create_notification_function): Removed.
12782         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12783
12784         * mdb-debug-info64.s
12785         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12786
12787         * mdb-debug-info32.s
12788         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12789
12790         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12791         currently only works on x86 and x86_64, so don't create it on ppc.
12792
12793 2008-04-21  Martin Baulig  <martin@ximian.com>
12794
12795         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12796
12797         * mini.c
12798         (mini_method_compile): In the fp elimination check, check
12799         `debug_options.mdb_optimizations' in addition to
12800         mono_debug_using_mono_debugger().       
12801
12802         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12803         disable some JIT optimizations which are only disabled when
12804         running inside the debugger.
12805         Added `--help-debug' option to describe the debugging options.
12806         (parse_debug_options): New static function to parse the `--debug'
12807         options, so we can easily add more stuff in future.
12808
12809 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12810
12811         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12812         the method has no body.
12813
12814 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12815
12816         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12817         assembly is not allowed in MSVC 64-bit compiler. 
12818         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12819         as we get floating point exceptions everywhere.
12820         
12821         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12822         correctly align arguments for call to throw_exception.
12823         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12824         
12825         Code contributed under MIT/X11 license.
12826
12827 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12828
12829         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12830
12831 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12834
12835         * mini-amd64.c (NEW_INS): Set cil_code.
12836
12837         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12838         from mini-amd64.c so all debugger related logic is in one place.
12839
12840         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12841         later won't have a random ip assigned to them.
12842
12843 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12846         the arch specific function initializes code_size.
12847         (mono_create_delegate_trampoline): Ditto.
12848
12849         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12850         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12851         platforms.
12852
12853         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12854         running under the debugger.
12855
12856         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12857         debugger.
12858
12859         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12860         debugger. Also move the disabling of optimizations here from driver.c.
12861         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12862         debugger.
12863
12864         * mini.h (MonoCompile): Add a few new flags.
12865
12866 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12869         so the cil_code field of created MonoInst's is properly set.
12870         (mini_select_instructions): Ditto.
12871
12872         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12873         (MONO_INST_NEW_CALL): Ditto.
12874
12875         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12876         in many places so the ins->cil_code field is properly initialized.
12877
12878         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12879         place.
12880
12881 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12882
12883         * mini.c (mini_method_compile): Print a different message when compiling a 
12884         shared method.
12885         
12886         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12887         > 1.
12888
12889 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12892         SSE2 instructions.
12893
12894         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12895         
12896 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * mini.c (handle_stack_args): Make this return void since its return value was
12899         never used. Also set cfg->unverifiable for invalid IL instead of calling
12900         G_BREAKPOINT ().
12901
12902 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12903
12904         * mini.c: Make sure "this" is live in catch clauses with type
12905         variables in shared generic code.
12906
12907 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12908
12909         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12910         generic_class_is_reference_type() to ensure the proper behaviour
12911         when sharing generic code and the type in question is a type
12912         argument.
12913
12914 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12915
12916         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12917         race conditions when printing thread dumps. Fixes #377738.
12918
12919 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12920         
12921         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12922         shows up when both MonoInst arguments can cause aliasig.
12923         There is likely no way in the current JIT to trigger this problem, but
12924         it showed up in the development of generics sharing, when in a new
12925         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12926         When the generics sharing code will be committed, its tests will be
12927         valid also for this bug.
12928
12929 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12932         PATCH_INFO_METHOD.
12933
12934         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12935         NULL.
12936
12937 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12940         use a more detailed exception message for InvalidCastException.
12941
12942         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12943
12944         * driver.c (mono_main): Add --debug=casts option to turn on better 
12945         InvalidCastException message details.
12946
12947         * mini.c (mini_get_debug_options): New helper function to return the address of
12948         the debug_options variable.
12949
12950         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12951         the jit_tls TLS variable.
12952
12953         * mini.c (mono_jit_tls): New TLS variable.
12954
12955         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12956         option is used.
12957
12958 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12959
12960         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12961
12962         * mini.c: Removed verifer related stuff, code moved to verify.c.
12963
12964         * driver.c: Using code from verify.c instead of mini.c.
12965
12966 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12967
12968         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12969         longer valid.
12970
12971 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12972
12973         * mini.c (check_for_method_verify): Enabling verification of
12974         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12975         have been fixed.
12976
12977 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12978
12979         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12980         caller saved registers as well.
12981         
12982         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12983         saved registers as well.
12984
12985 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12988
12989         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12990         code.
12991
12992 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12995         to get_call_info.
12996         (get_call_info): Take a gsctx argument instead of 'cfg'.
12997
12998 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13001         mono_verify_all is set.
13002
13003         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13004
13005         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13006
13007 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13008
13009         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13010         an exception.
13011
13012         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13013         verifier and the code generated by the compiler.
13014
13015 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13016
13017         * mini.c: Generic sharing of the non-nullable case of the box
13018         instruction.
13019
13020 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * inssel.brg: Fix the build.
13023
13024         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13025
13026 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13027
13028         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13029         Array:Address. Fixes #372410.
13030
13031         * iltests.il.in: New tests for readonly prefix.
13032
13033 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13034
13035         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13036         mini-trampolines.c.
13037
13038         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13039         mini-exceptions.c.
13040
13041         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13042         
13043         * mini.c (mono_decompose_op_imm): New helper function.
13044
13045         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13046         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13047         return value.
13048
13049         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13050         mono_arch_output_basic_block. Fix warnings.
13051
13052         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13053         for now.
13054
13055 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13056
13057         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13058         since the extra frame is now detected automatically inside the loop.
13059
13060         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13061         opts which are now in mono_peephole_ins ().
13062         
13063         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13064
13065         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13066         frames and skip duplicate managed-to-native frames. Fixes #367665.
13067
13068         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13069         opts which are now in mono_peephole_ins ().
13070         (mono_arch_peephole_pass_2): Ditto.
13071
13072         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13073
13074         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13075         arch independent peephole optimizations.
13076
13077         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13078         opts which are now in mono_peephole_ins ().
13079
13080         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13081         
13082         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13083
13084         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13085         pattern.
13086
13087         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13088         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13089         opcode. 
13090
13091 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13092
13093         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13094         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13095         return value.
13096
13097         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13098         mono_arch_output_basic_block. Fix warnings.
13099
13100 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13103         conv.ovf.u.un.
13104
13105 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13108         conv.ovf.u.un.
13109
13110         * iltests.il: Add new tests.
13111
13112 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13113
13114         * mini.c: Removed Windows version macros.
13115
13116 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13117
13118         * generic-sharing.c: Put reflection types in the extensible part
13119         of the runtime generic context.
13120
13121         * mini.c: Generic sharing of the GetTypeHandle special case of the
13122         ldtoken instruction.
13123
13124 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13127
13128         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13129         
13130         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13131         consistency with the other version on the linear IR branch.
13132
13133         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13134
13135         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13136
13137         * iltests.il.in: Add new tests.
13138
13139 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13140
13141         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13142
13143         * iltests.il.in: Add new tests.
13144
13145 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13146
13147         * mini.c: Two variables with the same name were declared in
13148         nesting contexts and one wasn't initialized.  Fixed.
13149
13150 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13151
13152         * mini.c: Generic sharing of the initobj instruction.
13153
13154 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13155
13156         * mini.c: make the test to optimize ldtoken from typeof() more
13157         precise.
13158
13159 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13160
13161         * mini.c: Generic sharing of the initobj instruction for reference
13162         types.
13163
13164 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13165
13166         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13167         the mono_breakpoint_clean_code() code to perform bound checks.
13168
13169 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13170
13171         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13172         mono_arch_patch_callsite() to include the start of the managed method
13173         to be able to perform bound checks.
13174
13175 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13176
13177         * mini.c: Generic sharing for the isinst instruction.
13178
13179 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13180
13181         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13182         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13183         with the runtime generic context argument.
13184
13185         * mini.c: Share calls to several types of unsharable methods by
13186         putting the address of the method code in the runtime generic
13187         context and doing an indirect call.
13188
13189         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13190         to switches.
13191
13192 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13193
13194         * generic-sharing.c: Change due to a change in the runtime genric
13195         context API.
13196
13197 2008-03-15  Martin Baulig  <martin@ximian.com>
13198
13199         * tramp-x86.c
13200         (mono_arch_nullify_class_init_trampoline): Add call to
13201         mono_breakpoint_clean_code() to make things work when running
13202         inside the debugger.
13203
13204         * tramp-amd64.c
13205         (mono_arch_nullify_class_init_trampoline): Add call to
13206         mono_breakpoint_clean_code() to make things work when running
13207         inside the debugger.
13208
13209 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13210
13211         * inssel-long.brg (reg): Fix 64 bit build.
13212
13213 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13214
13215         * mini.c, mini.h: Share static generic code by passing it an
13216         implicit argument pointing to the runtime generic context.
13217
13218         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13219         inssel-long32-mips.brg: New opcodes for calling shared static,
13220         which need to be passed the runtime generic context.
13221
13222         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13223         argument on the stack in the prologue if needed.  New function for
13224         finding the runtime generic context argument from the registers
13225         saved by the trampoline.
13226
13227         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13228         runtime generic context argument.
13229
13230         * tramp-amd64.c: Also restore the register used for the runtime
13231         generic context argument.
13232
13233         * mini-trampoline.c: Resolve shared static calls by consulting the
13234         runtime generic context via the new argument.
13235
13236         * generic-sharing.c: Add an argument to sharability-checking
13237         functions that specifies whether type variables should be treated
13238         as sharable type arguments.
13239
13240         * inssel-x86.brg: Removed a superfluous, buggy rule.
13241
13242         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13243         to switches.
13244
13245 2008-03-14  Martin Baulig  <martin@ximian.com>
13246
13247         * debug-debugger.c (main_thread_handler): Call
13248         mono_runtime_run_main() without sending any notifications.
13249
13250         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13251
13252 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13255
13256 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13257
13258         * tramp-x86.c: Fixed register restore offsets in the trampoline
13259         code for ECX and EDX.
13260
13261 2008-03-12  Geoff Norton  <gnorton@novell.com>
13262
13263         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13264         different ucontext_t implementations.
13265         * exceptions-arm.c: Use the above defines to get exceptions working on 
13266         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13267         * mini-arm.c: Implement iPhone icache support (based on a patch by
13268         Luke Howard lukeh@padl.com)
13269
13270 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13271
13272         * mini.c: Enable generic sharing of calls to non-static
13273         non-interface non-generic non-value-type methods.
13274
13275         * mini-trampolines.c: Resolve calls from shared generic code.
13276
13277 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13280
13281         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13282
13283 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13284
13285         * mini.c: some fixes for the AOT compiler.
13286
13287 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13288
13289         * cpu-amd64.md: Add clob:1 to some float opcodes.
13290
13291 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13292
13293         * mini.h: Added MiniVerifierMode enumeration.
13294
13295         * mini.c: Added mini_verifier_set_mode to control
13296         the usage of the new verifier.
13297
13298         * mini.c (mono_method): Integrated the new verifier.
13299
13300         * driver.c: Extended --security option with validil and
13301         verifiable options to activate the new verifier.
13302
13303 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13304
13305         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13306         optimization to ctors taking 0 or 2 arguments too.
13307
13308         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13309         a bit.
13310
13311         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13312
13313         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13314
13315 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13318         non-aot case as well.
13319
13320         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13321
13322         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13323         changes.
13324
13325         * aot-compiler.c (encode_patch): Ditto.
13326
13327         * mini.h (G_MININT32): Fix the definition of this.
13328
13329 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13332
13333         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13334
13335 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13338         methods returning vtypes in registers.
13339         (mono_arch_allocate_vars): Ditto.
13340
13341         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13342
13343         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13344
13345         * generics.cs: Add a test from the linear IR branch.
13346
13347         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13348
13349         * mini.c (inline_method): Cache failed inline attempts.
13350
13351 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13352
13353         * mini.c: For shared methods of generic classes put the location
13354         of "this" into the MonoGenericJitInfo.
13355
13356         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13357         register out of a MonoContext by register number.  Add the generic
13358         sharing context as an argument to mono_arch_find_this_argument().
13359
13360         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13361         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13362         for new arch function.
13363
13364         * mini-exception.c: Handle open exception clauses in shared
13365         generic code.
13366
13367         * mini-trampolines.c: Supply additional argument to
13368         mono_arch_find_this_argument().
13369
13370 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13371
13372         * Makefile.am (regtests): Run the bench.exe tests last.
13373
13374 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13377         a bit.
13378
13379 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13382         with MS.
13383
13384         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13385         
13386         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13387
13388         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13389         whose class has no cctor.
13390
13391         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13392
13393 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13396         unverified.
13397
13398 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13401         to be in sync with the code on the linear IR branch.
13402
13403         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13404
13405         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13406
13407 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13408
13409         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13410
13411         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13412
13413         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13414
13415         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13416
13417         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13418         
13419         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13420         body.
13421
13422 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13423
13424         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13425         OP_LOADR4_MEMBASE emission.
13426
13427         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13428         (mono_spillvar_offset_float): Ditto.
13429
13430         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13431
13432         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13433         emission.
13434
13435         * basic-long.cs: Add regression tests for them.
13436
13437         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13438         use.
13439         (mono_arch_allocate_vars): Fix representation of single-precision float
13440         argument.
13441         (mono_arch_output_basic_block): Ditto.
13442
13443         * inssel-mips.brg: Ditto, remove duplicate items.
13444
13445         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13446         arguments of tail calls as on other platforms.
13447         (mono_arch_output_basic_block): Handle tail calls.
13448
13449         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13450         register.
13451
13452         * objects.cs (test_5_pass_static_struct): Add test for it.
13453
13454         Contributed under MIT/X11 license.
13455
13456 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * Makefile.am: Use gmcs for compiling the regression tests.
13459
13460         * *.2.cs *.2.il: Rename to *.cs and *.il.
13461
13462 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13463
13464         * regalloc.h: Make the vassign array smaller.
13465
13466         * mini.c (mini_method_compile): Remove an unused field in cfg.
13467
13468         * mini-codegen.c: Add a bunch of micro optimizations.
13469
13470 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * regalloc.h: Remove some unused fields.
13473
13474 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13477
13478         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13479
13480 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13481
13482         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13483
13484         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13485         trampoline: Fetch an entry from the runtime generic context.  If
13486         it's NULL, jump to the actual trampoline to fill the runtime
13487         generic context.  Otherwise, return it.
13488
13489         * mini.c: Call the lazy fetch trampoline to get entries out of the
13490         runtime generic context.
13491
13492         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13493         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13494         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13495
13496 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13497
13498         * mini.c: Fetch data out of the extensible part of the runtime
13499         generic context instead of calling a helper function.
13500
13501         * generic-sharing.c: Some functions moved into
13502         metadata/generic-sharing.c.  Helper function for fetching other
13503         types now checks and asserts against extensible rgctx (just for
13504         debugging purposes - the helper function isn't called anymore
13505         unless for debugging).
13506
13507 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13508
13509         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13510         for tail calls up to the point that the tests in iltests.exe run. Also add a
13511         dummy CKFINITE implementation.
13512         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13513         needed for trampoline LMF frames.
13514
13515         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13516         trampoline LMF frames.
13517
13518 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13519
13520         * mini.c (inline_method): clean any pending loader error when inlining fail.
13521         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13522
13523 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13524
13525         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13526
13527         * aot-runtime.c (decode_patch_info): Ditto.
13528
13529         * mini.c (mono_resolve_patch_target): Ditto.
13530         
13531         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13532         icall wrappers.
13533
13534         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13535         
13536         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13537         if it references an icall address.
13538
13539 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * cpu-s390x.md: Remove some more unused opcodes.
13542         
13543         * cpu-s390x.md: Remove some unused opcodes.
13544
13545         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13546         mono_op_imm_to_op ().
13547
13548         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13549         instead of a switch statement.
13550         
13551         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13552         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13553
13554         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13555         
13556         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13557
13558         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13559         -1.
13560
13561 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13564         opened. Fixes #362607.
13565
13566         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13567
13568         * iltests.il.in: Add a test for static methods in interfaces.
13569
13570 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * genmdesc.c (build_table): Fix a crash on older glib versions.
13573
13574         * cpu-sparc.md: Remove some unused opcodes.
13575         
13576         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13577         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13578
13579         * cpu-amd64.md: Remove some unused opcodes.
13580
13581         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13582         like the other opcodes.
13583
13584 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13587
13588         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13589
13590         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13591         variables 'cfg' instead of 'm' for consistency.
13592
13593         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13594
13595         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13596         argument holding the vtype return address, to avoid the ambigious use of
13597         cfg->ret for this purpose.
13598
13599         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13600
13601         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13602         
13603         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13604         new mono_print_ins () function which only takes one argument.
13605
13606 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13609         macro arguments.
13610
13611 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13612
13613         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13614
13615         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13616
13617         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13618         opcodes and other small changes.
13619
13620         * mini-ops.h: Add some new opcodes from the linear IR branch.
13621
13622         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13623
13624         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13625         opcodes, use the REG_MEMBASE opcodes instead.
13626         
13627         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13628         opcodes, use the REG_MEMBASE opcodes instead.
13629         
13630         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13631         linear IR branch.
13632
13633         * mini.c (mono_op_imm_to_op): New helper function.
13634
13635         * mini-ops.h: Add some opcodes from linear IR branch.
13636
13637 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13640         <tsv@solvo.ru>.
13641
13642 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13645         OP_ICONV_TO_R4/R8.
13646
13647         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13648
13649 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * aot-compiler.c (emit_method_code): Add an assert.
13652
13653         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13654         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13655         methods.
13656
13657 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13660         some load/store opcodes so they are consistent. 
13661         (mono_arch_emit_prolog): Simplify some code.
13662
13663         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13664
13665         * objects.cs: Add tests for large argument offsets on ARM.
13666
13667         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13668         stack offsets. Fixes #359651.
13669
13670         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13671
13672         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13673
13674         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13675
13676         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13677
13678         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13679
13680         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13681         rid of CEE_CONV_R_UN.
13682
13683         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13684
13685 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13688
13689         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13690
13691         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13692
13693         * cpu-amd64.md: Remove some unused opcodes.
13694
13695         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13696
13697         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13698
13699         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13700         arch specific functions for its parts. Call the peephole pass after local
13701         regalloc so the prolog can compute a more accurate max_offset.
13702         
13703         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13704         the corresponding OP_I/OP_L opcodes.
13705
13706         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13707
13708         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13709
13710 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13713         as they are handled in mini.c.
13714
13715         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13716         
13717         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13718         case since it is handled in mini.c.
13719
13720         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13721
13722         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13723
13724         * *.c: Use the new opcodes in the IR and back end code.
13725
13726         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13727
13728         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13729
13730 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13731
13732         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13733         an assert because it has a race condition.
13734
13735 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13736
13737         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13738
13739         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13740
13741         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13742
13743         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13744         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13745
13746 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13747
13748         * cpu-amd64.md (move): Correct the maximum size of move.
13749
13750 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13751
13752         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13753         the generic class init trampoline to return quickly if the class
13754         is already inited.
13755
13756 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13759         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13760
13761 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13764         branch.
13765
13766 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13767
13768         * objects.cs: Add some soft-float tests.
13769
13770         * mini.c: Fix a couple more soft-float issues.
13771
13772         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13773
13774         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13775         avoid a REX prefix.
13776
13777 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13780         exception happens while compiling a virtual method.
13781
13782 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13783
13784         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13785         
13786         * mini-sparc.c: Fix build.
13787
13788         * mini-sparc.c (get_call_info): Add support for generic sharing.
13789
13790         * mini-exceptions.c: Add a FIXME.
13791
13792 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13795         altstack handling code.
13796
13797         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13798         
13799         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13800
13801         * mini-s390.c: Add support for generic sharing.
13802
13803         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13804         Fix CAS on s390.
13805         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13806
13807         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13808
13809         * mini-s390x.c: Add support for generic sharing.
13810         
13811         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13812         Fix CAS on ia64.
13813         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13814
13815         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13816         can be used since it takes a 16 bit signed immediate.
13817
13818         * inssel-s390x.brg: Fix OP_SETRET.
13819
13820         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13821
13822         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13823
13824         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13825
13826         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13827
13828         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13829         in one place.
13830
13831         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13832         stuff.
13833
13834         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13835         of the unused mono_arch_patch_delegate_trampoline stuff.
13836
13837 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * basic-long.cs: Move the fp related tests to basic-float.cs.
13840
13841         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13842
13843         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13844
13845         * basic-calls.cs: Add a test for proper float argument passing.
13846
13847         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13848         if the context corresponds to an exception received through a signal.
13849
13850         * exceptions.cs: Add a test for nullref handling at the start of a try
13851         clause.
13852
13853         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13854
13855         * jit-icalls.c (mono_break): New JIT icall.
13856
13857         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13858
13859         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13860
13861 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * cpu-*.md: Get rid of unused opcodes.
13864
13865         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13866
13867         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13868         by all platforms.
13869
13870         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13871         define.
13872
13873         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13874         the arch independent trampoline code in mini-trampolines.c.
13875
13876         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13877
13878         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13879
13880         * mini-s390.h: Remove an unused define.
13881         
13882         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13883         the arch independent trampoline code in mini-trampolines.c.
13884
13885         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13886
13887 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13888
13889         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13890
13891         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13892
13893         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13894
13895         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13896
13897         * cpu-amd64.md: Use smaller sizes for int opcodes.
13898
13899         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13900
13901         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13902         objects.cs.
13903
13904         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13905         debugging.
13906
13907         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13908         instead of though a pointer to save an indirection when accessing elements of
13909         the array.
13910
13911         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13912         some typos.
13913         (NOT_IMPLEMENTED): New helper macro.
13914         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13915         of a bb.
13916
13917         * *.c: Use the new helper macro.
13918
13919 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13922
13923 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13924
13925         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13926         stack slots.
13927
13928 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13929
13930         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13931         profiling is enabled.
13932         
13933         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13934         the end.
13935         (mono_arch_emit_prolog): Add more first bblock optimizations.
13936
13937         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13938         in order if possible.
13939         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13940         bblock, since the arguments are still in their original registers.
13941
13942         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13943
13944 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13945
13946         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13947         as well.
13948
13949         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13950         offset 0.
13951
13952         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13953
13954         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13955         process async exceptions received while in unmanaged code.
13956
13957         * mini.c (mini_init): Install a callback with the runtime which will be called
13958         when a thread receives an async exception while in unmanaged code.
13959
13960         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13961
13962         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13963
13964 2008-01-16  Wade Berrier  <wberrier@novell.com>
13965
13966         * cpu-g4.md:
13967         * cpu-arm.md:
13968         * cpu-s390x.md:
13969         fix build
13970
13971 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13972
13973         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13974         compilation with sun cc.
13975
13976         * cpu-*.md: Fix the build.
13977
13978         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13979
13980         * mini-amd64.h: Add some comments to the MonoLMF structure.
13981
13982         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13983         
13984         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13985         in the LMF structure if possible. This saves two instructions in the
13986         managed->native wrappers.
13987
13988         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13989
13990 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13991
13992         * generic-sharing.c: New type argument lookup code which uses the
13993         runtime generic context template.
13994
13995 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13998
13999         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14000         (mono_arch_output_basic_block): Fix localloc implementation.
14001
14002         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14003
14004         * mini-ia64.c (peephole_pass): Fix ia64 build.
14005
14006         * mini-amd64.c (peephole_pass): Fix a warning.
14007         
14008         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14009         at a constant offset from sp/fp.
14010
14011         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14012         instead of obtaining it from *lmf in the managed method case.
14013
14014 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14017
14018 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14019
14020         * mini.h (MonoInstList): New type.
14021         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14022         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14023         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14024         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14025         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14026         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14027         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14028         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14029         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14030         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14031         MONO_INST_LIST_FOR_EACH_ENTRY,
14032         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14033         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14034         mono_inst_list_first, mono_inst_list_last,
14035         mono_inst_list_next, mono_inst_list_prev): New instruction
14036         list handling interfaces.
14037         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14038         list head 'ins_list'.
14039         (MonoInst): Replace next pointer with list head 'node'.
14040         (MonoCallInst): Make 'out_args' a MonoInstList.
14041         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14042         (MonoCompile): Delete reverse_inst_list and
14043         reverse_inst_list_len.
14044         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14045         mono_arch_lowering_pass, mono_arch_local_regalloc,
14046         mono_arch_output_basic_block, mono_arch_emit_prolog):
14047         Convert to new instruction lists.
14048         (insert_after_ins): Delete.
14049         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14050         instruction lists.
14051         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14052         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14053         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14054         mono_emulate_opcode, mono_emit_load_got_addr,
14055         inline_method, mono_method_to_ir, mono_print_bb_code,
14056         print_dfn, decompose_pass, nullify_basic_block,
14057         replace_out_block_in_code, remove_block_if_useless,
14058         merge_basic_blocks, move_basic_block_to_end,
14059         try_unsigned_compare, optimize_branches, mono_print_code,
14060         mini_select_instructions, remove_critical_edges): Likewise.
14061         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14062         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14063         mono_arch_output_basic_block, mono_arch_emit_prolog):
14064         Likewise.
14065         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14066         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14067         mono_arch_output_basic_block): Likewise.
14068         (inst_list_prepend, insert_after_ins): Delete.
14069         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14070         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14071         instruction lists.
14072         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14073         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14074         mono_arch_emit_prolog): Likewise.
14075         * cfold.c (mono_constant_fold): Likewise.
14076         * liveness.c (visit_bb, mono_analyze_liveness,
14077         optimize_initlocals): Likewise.
14078         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14079         * graph.c (mono_draw_code_cfg): Likewise.
14080         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14081         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14082         mono_ssa_cprop): Likewise.
14083         * abcremoval (get_relations_from_previous_bb, process_block):
14084         Likewise.
14085         * local-propagation (mono_cprop_invalidate_values,
14086         mono_local_cprop_bb): Likewise.
14087         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14088         peephole_pass, mono_arch_output_basic_block,
14089         mono_arch_emit_prolog): Likewise.
14090         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14091         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14092         mono_arch_emit_prolog): Likewise.
14093         (insert_after_ins): Delete.
14094         * aliasing.c (print_code_with_aliasing_information,
14095         mono_build_aliasing_information, mono_aliasing_deadce):
14096         Convert to new instruction lists.
14097         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14098         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14099         mono_arch_local_regalloc, mono_arch_output_basic_block):
14100         Likewise.
14101         (insert_after_ins): Delete.
14102         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14103         peephole_pass, mono_arch_output_basic_block): Convert to
14104         new instruction lists.
14105         * mini-codegen (InstList, inst_list_prepend,
14106         insert_after_ins): Delete.
14107         (insert_before_ins, get_register_force_spilling,
14108         get_register_spilling, free_up_ireg, free_up_reg,
14109         create_copy_ins, create_spilled_store, alloc_int_reg,
14110         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14111         to new instruction lists.
14112         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14113         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14114         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14115         (insert_after_ins): Delete.
14116         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14117         mono_arch_local_regalloc, mono_arch_output_basic_block,
14118         mono_arch_call_opcode): Convert to new instruction lists.
14119         (insert_after_ins): Delete.
14120         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14121         peephole_pass, mono_arch_output_basic_block,
14122         mono_arch_emit_prolog): Convert to new instruction lists.
14123
14124 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14127
14128         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14129         Fixes #353182.
14130
14131         * Makefile.am (version.h): Make this work with non-bash shells.
14132
14133 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14134
14135         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14136
14137 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14138
14139         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14140         the InitializeArray optimization.
14141
14142 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14143
14144         * mini.c driver.c: Don't include os/gc_wrapper.h.
14145
14146 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14147
14148         * mini.c (print_jit_stats): Print GC statistics if available.
14149
14150 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14151
14152         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14153
14154 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14155
14156         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14157
14158 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14161         
14162         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14163
14164         * driver.c (mono_main): Ditto.
14165
14166 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14169
14170         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14171         in the vtable can't be encoded.
14172         (compile_method): Ditto.
14173
14174 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14177         defined.
14178
14179         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14180         lmf->rbp.
14181
14182         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14183         the top LMF entry belongs to the current method.
14184
14185         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14186
14187 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14188
14189         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14190         
14191         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14192
14193         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14194
14195         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14196
14197         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14198
14199         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14200         implementation.
14201
14202         * basic-float.cs: Add an ulong->double cast test.
14203
14204 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * mini.c (mono_method_to_ir): Fix a warning.
14207
14208 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14209
14210         * mini-ops.h: Add OP_SWITCH.
14211
14212         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14213         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14214
14215 2007-12-11  Geoff Norton  <gnorton@novell.com>
14216
14217         * mini-s390x.c: Minor change to the MAX() define to allow
14218         it to compile with other gcc versions.
14219
14220 2007-12-11  Geoff Norton  <gnorton@novell.com>
14221
14222         * cpu-s390x.md:
14223         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14224
14225 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14226
14227         exceptions-arm.c (mono_arch_get_restore_context): Restore
14228         the frame pointer.
14229
14230         exceptions-arm.c (throw_exception): Save the frame pointer.
14231         This is a partial fix for #323747. Only the client side is
14232         fixed.
14233
14234 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14235
14236         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14237         was using an unrelated variable to log the class which
14238         needed the cctor to be called. This was crashing on arm.
14239
14240 2007-12-09  Robert Jordan  <robertj@gmx.net>
14241
14242         * mini-x86.c (mono_arch_emit_epilog):
14243         Consider all kinds of 64-bit types. Fixes #323114.
14244
14245 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14248
14249 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14252
14253 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14254
14255         * mini.c: run type ctor before allocating an object, not only
14256         when running it's constructor method (fixes at least part of bug #342507).
14257
14258 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14259         
14260         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14261         
14262         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14263         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14264         function.
14265
14266         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14267         mono_generic_class_init_trampoline () the same as it is done with the other
14268         trampolines.
14269
14270         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14271         aot-runtime.c aot-compiler.c: Implement AOT support.    
14272
14273 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14274
14275         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14276         build for archs which don't have the vtable trampoline defined
14277         yet.
14278
14279 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14282
14283         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14284
14285         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14286
14287         * tramp-<ARCH>.c: Use the new helper function.
14288
14289 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14290
14291         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14292         trampoline call, which takes a vtable argument.
14293
14294         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14295         OP_TRAMPCALL_VTABLEs like other calls.
14296
14297         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14298         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14299         call.  Implemented a support function which fetches the vtable
14300         from a register set.
14301
14302         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14303         Implemented a generic class init trampoline, using the
14304         OP_TRAMPCALL_VTABLE opcode.
14305
14306         * mini.c: Implemented static field access when sharing generic
14307         code.  This implies initing the class using the new
14308         OP_TRAMPCALL_VTABLE call.
14309
14310 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14311
14312         * mini.c: Don't compile methods with sharing enabled if their
14313         classes are disabled for sharing.
14314
14315 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14316
14317         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14318         opcodes. Fixes #346563.
14319
14320         * objects.cs: Add a new test.
14321
14322         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14323
14324         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14325         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14326
14327 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14328
14329         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14330
14331 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14332
14333         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14334         code stream.
14335
14336 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14337
14338         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14339
14340         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14341         optimization in the AOT case.
14342         
14343 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14344
14345         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14346         
14347         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14348
14349         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14350
14351         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14352
14353         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14354         is created by the inlined delegate ctor.
14355
14356         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14357
14358         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14359
14360 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * cpu-x86.md: Fix the length of ckfinite.
14363
14364 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14365
14366         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14367         
14368         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14369         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14370
14371         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14372
14373         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14374         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14375
14376 2007-11-28  Martin Baulig  <martin@ximian.com>
14377
14378         * mini-x86.c
14379         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14380         after creating the trampoline.
14381
14382 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14383
14384         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14385
14386         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14387         the same version.
14388
14389         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14390         instead of the calling method to help AOT.
14391
14392         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14393
14394 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14397         is defined.
14398
14399 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14400
14401         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14402         
14403         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14404         (encode_method_ref): No need to handle generic method definitions specially.
14405
14406         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14407
14408         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14409         decode_klass_info.
14410
14411         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14412         encode_klass_info.
14413         (compile_method): Enable generic sharing.
14414
14415 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14418         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14419
14420         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14421         generic code.
14422
14423         * mini-trampolines.c: Fix a warning.
14424
14425         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14426         NEW_PCONST.
14427         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14428         (generic_class_is_reference_type): Remove unused function.
14429
14430         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14431         in the generic vtable trampoline case.
14432
14433         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14434         
14435         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14436         return an AOT method based on a vtable slot.
14437
14438         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14439
14440         * mini.c (mini_get_vtable_trampoline): Export this.
14441
14442 2007-11-22  Martin Baulig  <martin@ximian.com>
14443
14444         * debug-debugger.h
14445         (MonoDebuggerInfo): Move `debugger_version' up.
14446
14447 2007-11-22  Martin Baulig  <martin@ximian.com>
14448
14449         * mini-amd64.c
14450         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14451
14452         * mini-trampolines.c
14453         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14454         after compiling the method.
14455
14456 2007-11-20  Martin Baulig  <martin@ximian.com>
14457
14458         * debug-mini.c
14459         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14460         (mono_debugger_remove_breakpoint): Likewise.
14461         (mono_debugger_check_breakpoints): Likewise.
14462
14463         * debug-debugger.c: Implement the new breakpoint interface here.
14464
14465 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14466
14467         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14468         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14469
14470         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14471
14472 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14473
14474         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14475
14476         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14477         mini.c.
14478
14479         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14480         mini.c.
14481
14482         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14483         returning a vtype in a register.
14484
14485         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14486         here from the arch specific code.
14487
14488         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14489         mini.c.
14490
14491         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14492         (mono_arch_emit_prolog): Increment maximum prolog size.
14493
14494         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14495         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14496
14497         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14498         MonoGenericSharingContext.
14499
14500         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14501         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14502
14503 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14504
14505         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14506         which extract fields out of the runtime generic context.  Full
14507         sharing of the NEWARR opcode.
14508
14509 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14510
14511         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14512         --enable-minimal=ssa.
14513
14514 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14517         mono_marshal_get_delegate_invoke () signature change.
14518
14519 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14520
14521         * mini.c: Removed the shared context in favor of the generic
14522         sharing context.  Allocate the MonoJitInfo structure with room for
14523         the generic sharing context if it's needed.
14524
14525         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14526         domain-internals.h now.
14527
14528         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14529
14530         * generic-sharing.c: Several changes for working without a shared
14531         context and instead operating on open types instead.
14532
14533 2007-11-12  David S. Miller  <davem@davemloft.net>
14534
14535        * inssel-sparc.brg: Fix double instruction emit.
14536
14537 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14538
14539         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14540         Get/Set/Address methods.
14541         
14542         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14543         mono_marshal_get_delegate_invoke signature change.
14544
14545 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14546
14547         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14548         This can happens with dynamic methods. Fixes the other bug in #322722.
14549
14550 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14551
14552         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14553         BX call sequence.
14554
14555         * mini-arm.c (arm_patch): Implement patching of BX call
14556         sequence. Fixes one of the bugs in #322722.
14557
14558 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14559
14560        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14561        under Linux.  We only need to flush every 32-byte cache line.    
14562
14563 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14564
14565         * mini.c:
14566         move_basic_block_to_end: Add branches when needed, eventually creating
14567         a new BB.
14568         optimize_branches: added a parameter that tells if it's ok to create
14569         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14570         and avoid calling move_basic_block_to_end when it's not ok.
14571         Fixes bug 318677.
14572
14573 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14574
14575         * mini.c: Abort inlining call to InitializeArray if something
14576         looks wrong.  Let the icall handle it, which now has proper safety
14577         checks.
14578
14579 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14580
14581         * mini.c (mono_spill_call): add support for soft-float.
14582
14583         * mini.c (mono_method_to_ir): add support for soft-float
14584         to inlined functions that return float.
14585
14586         * mini.c (mono_method_to_ir): add support for soft-float
14587         to cee_stsfld opcode on float fields.
14588
14589 2007-11-05  Geoff Norton  <gnorton@novell.com>
14590
14591         * mini-x86.h: Fix the structure access for X86 Leopard.
14592
14593
14594 2007-11-05  Martin Baulig  <martin@ximian.com>
14595
14596         * mini-trampolines.c
14597         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14598         after compiling the method to notify the debugger.
14599
14600 2007-11-05  Martin Baulig  <martin@ximian.com>
14601
14602         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14603
14604 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14605
14606         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14607         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14608
14609 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14610
14611         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14612         native-to-managed wrappers.
14613         
14614 2007-11-01  Geoff Norton  <gnorton@novell.com>
14615
14616         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14617         members.
14618
14619 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14620
14621         * mini.c, mini-x86.c: when getting back from unmanaged code
14622         to managed via a marshaled delegate we also need to set the
14623         right domain.
14624
14625 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14626
14627         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14628         for amd64.
14629
14630 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14631
14632         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14633         let the debugger or other external agents to tell the JIT when
14634         a sw breakpoint has been inserted in the code that the JIT needs
14635         to be able to inspect.
14636
14637 2007-10-31  Martin Baulig  <martin@ximian.com>
14638
14639         * debug-debugger.h
14640         (MonoDebuggerInfo): Remove `runtime_class_init'.
14641
14642 2007-10-30  Martin Baulig  <martin@ximian.com>
14643
14644         * debug-mini.h
14645         (mono_debugger_thread_created): Added `MonoThread *' argument.
14646         (mono_debugger_extended_notification): New public method.
14647         (mono_debugger_trampoline_compiled): New public method.
14648
14649         * debug-mini.c
14650         (MonoDebuggerThreadInfo): Added `thread' and
14651         `extended_notifications' fields.
14652
14653         * debug-debugger.c
14654         (debugger_executable_code_buffer): New static variable.
14655
14656         * debug-debugger.h
14657         (MonoDebuggerInfo): Added `executable_code_buffer',
14658         `executable_code_buffer_size', `breakpoint_info_area',
14659         `breakpoint_table' and `breakpoint_table_size'.
14660
14661 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14662
14663         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14664         that IP  either is an unused value or the vtable pointer. IMT 
14665         calls use vtable + offset now. Reduced by almost half the size
14666         of IMT entries.
14667
14668 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14669
14670         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14671         defines to access param registers. Replace long usage with
14672         gsize as sizeof(long) != sizeof(void*) on Win64.
14673
14674         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14675         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14676         instead of non-existant _GetAddressOfReturnAddress.
14677
14678         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14679         param registers. Save/restore %rdi and %rsi in MonoLMF.
14680
14681         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14682         param registers. Modify (throw_exception) signature to take 
14683         %rdi and %rsi on Win64. 
14684
14685         Code is contributed under MIT/X11 license.
14686
14687 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14688
14689         * helpers.c: unlink debugging output files.
14690
14691 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * mini.c: Move mono_create_ftnptr () to object.c.
14694
14695 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14696
14697         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14698         optional. This function can now be used to disassemble code generated
14699         outside the JIT such as trampolines and IMT thunks.
14700
14701         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14702
14703         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14704         vtable pointer from a ldr instruction.
14705
14706         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14707         new IMT call sequence.
14708
14709         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14710         call sequence for interface invocations.
14711
14712         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14713         for imt support. This function is empty since IMT on ARM requires no
14714         special handling on the IR side.
14715
14716         * mini-arm.c (mono_arch_find_imt_method): added, required for
14717         imt support.
14718
14719         * mini-arm.c (mono_arch_find_this_argument): added, required
14720         for imt support.
14721
14722         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14723         a ldr instruction to load a value stored in the code stream.
14724
14725         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14726         for imt support.
14727
14728
14729 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14730
14731         * mini.c (mini_init): Install the jump trampoline callback.
14732
14733 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14734
14735         * mini-trampolines.c: handle synchronized methods with the common
14736         vtable trampoline (bug #335601).
14737
14738 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14739
14740         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14741
14742         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14743         64 bit platforms.
14744
14745         * mini-ia64.h mini-ia64.c: Add support for IMT.
14746
14747         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14748         prolog. Fixes #331958.
14749
14750 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14753
14754 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14755
14756         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14757         trampoline.
14758
14759 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14762         trampoline.
14763
14764 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14767         trampoline.
14768
14769 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14770
14771         * mini-trampolines.c: changed the magic rampoline to understand
14772         the common vtable trampoline method: the method to invoke is
14773         determined by the vtable displacement of the call.
14774
14775 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14776
14777         * mini.c, mini.h: register the common vtable trampoline if the
14778         architecture supports it.
14779
14780 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * cpu-amd64.md: use the correct max length for tls_get.
14783
14784 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14785
14786         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14787         CEE_STELEM_ANY. Fixes #333696.
14788
14789 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14790
14791         * exceptions-x86.c: provide more graceful handling of the case where
14792         we followed a bogus function pointer from managed code (bug #332866).
14793
14794 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14795
14796         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14797         replaces the generic_shared flag and will carry more information
14798         in the future.
14799
14800         * generic-sharing.c: Added mini_type_stack_size() which allows
14801         allows open types if given a generic sharing context.
14802         mini_get_basic_type_from_generic() takes a
14803         MonoGenericSharingContext* instead of a MonoCompile* now.
14804
14805         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14806         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14807         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14808         changes above.  Just passing arguments through to the right
14809         places.
14810
14811 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14812
14813         * mini-arm.c: unify the call emission to emit_code_seq().
14814
14815 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14816
14817         * tramp-arm.c: reduced the trampoline size.
14818
14819 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14820
14821         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14822         variable handling out of arch-specific code.
14823
14824 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14825
14826         * mini-arm.c: implemented fast delegate dispatch.
14827
14828 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14829
14830         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14831         that fp elimination is turned off if the space required by locals is too
14832         big. Fixes #331958.
14833
14834 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14837         ARM to the new style trampoline.
14838
14839 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14840
14841         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14842
14843         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14844
14845 2007-10-09  Martin Baulig  <martin@ximian.com>
14846
14847         * debug-debugger.h
14848         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14849         `field_info_offset_offset'.     
14850
14851 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14852
14853         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14854         removed more internal usage of the r11 register and made it available
14855         to the register allocator.
14856
14857 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14858
14859         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14860         when sharing generics and treat type variables as references.
14861
14862 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14863
14864         * mini-ppc.c: started removing the internal uses of register r11
14865         to eventually allow the register allocator to manage it as an
14866         additional available register.
14867
14868 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14869
14870         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14871
14872 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14873
14874         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14875         specific trampolines as they are not performance critical as a jump
14876         target (maybe align as before only for AOT code?). This saves about
14877         200 KB of native code on x86 for monodevelop startup.
14878
14879 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14880
14881         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14882         monodevelop startup.
14883
14884 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14887
14888         * mini-sparc.h mini-sparc.c: Implement IMT support.
14889
14890         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14891         its smaller and doesn't clobber sparc_g1.
14892
14893         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14894
14895 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14896
14897         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14898
14899 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14900
14901         * mini-ppc.c: implemented fast delegate invocation.
14902
14903 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14904
14905         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14906
14907 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14908
14909         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14910         code to the new style trampoline in preparation for IMT support.
14911
14912 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14913
14914         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14915         systems already. This also reduces the specific trampiline sizes and
14916         prepares for the use of r12 as the IMT identifier register.
14917
14918 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14919
14920         * mini-mips.h: endianess fix (simplified from a patch by
14921         Thomas Kunze <thommy@tabao.de>, bug #323737).
14922
14923 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14924
14925         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14926         to access ucontext fields and enable netbsd support
14927         (partially from Magnus Henoch <mange@freemail.hu>).
14928
14929 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14930
14931         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14932         use the preprocessor from the CPP env var if it is set.
14933
14934 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14937         code, before interface_offset gets used.
14938
14939 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14942         mono_class_setup_vtable () before accessing klass->vtable.
14943
14944 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14947         hackish.
14948
14949 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14950
14951         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14952         IMT slots (this saves hundreds of KB of memory in programs like
14953         IronPython and Monodevelop).
14954
14955 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14956
14957         * mini.c: print the delegate counter.
14958
14959 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14960
14961         * mini-x86.c: make it easier to enable the debugging code for IMT
14962         slots.
14963
14964 2007-09-28  Martin Baulig  <martin@ximian.com>
14965
14966         * debug-debugger.h
14967         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14968         `mono_method_klass_offset' and `mono_method_token_offset'.
14969
14970 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14971
14972         * mini.c: First generics sharing implementation.  Can only share
14973         in very simple cases.  If sharing doesn't work it falls back to
14974         dedicated compilation.
14975
14976         * mini.h: Flag in MonoCompile to specify whether generic
14977         compilation is shared.  Flags enum for marking which generic inst
14978         of a context is used.  Prototypes for helper functions.
14979
14980         * generic-sharing.c: Helper functions for generic method sharing.
14981
14982         * optflags-def.h: Optimization flag (gshared) for enabling generic
14983         method sharing added.
14984
14985         * Makefile.am: generic-sharing.c added.
14986
14987 2007-09-19 Daniel Nauck <dna@mono-project.de>
14988
14989         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14990
14991 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14992         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14993         fixes bug 325507.
14994
14995 2007-09-19  Martin Baulig  <martin@ximian.com>
14996
14997         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14998         mono_debug_cleanup() is now part of mono_cleanup().
14999
15000 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15001
15002         * driver.c (mono_main): Fix a warning.
15003
15004 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15005
15006         * aot-compiler.c: Optimize various parts when processing large assemblies.
15007         Fixes ##325568.
15008
15009         * mini.c (mono_patch_info_hash): Improve hash function.
15010
15011 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15012
15013         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15014         
15015         Code is contributed under MIT/X11 license.
15016
15017 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * mini.c (mini_init): Fix a leak.
15020
15021         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15022
15023 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15024
15025         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15026
15027 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15028
15029         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15030
15031 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15032
15033         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15034         variance tests.
15035
15036         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15037
15038         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15039
15040         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15041
15042         * aot-runtime.c (decode_patch_info): Ditto.
15043
15044 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15045
15046         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15047         static case. Cache delegates in architecture specific code, 
15048         based on number of parameters.
15049         
15050         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15051         in architecture specific code, based on number of parameters.
15052         
15053         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15054         caching happen in architecture specific code now.
15055         
15056         Code is contributed under MIT/X11 license.
15057
15058 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15059
15060         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15061         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15062         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15063
15064         Code is contributed under MIT/X11 license.
15065
15066 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15067         * mini.c: (mono_thread_abort) Fixed bug #82416.
15068
15069 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15070
15071         * mini.: hook the new managed GC allocation feature into the JIT.
15072
15073 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15074
15075         * mini.c: implementation for the new runtime tls opcode.
15076
15077 2007-09-11  Martin Baulig  <martin@ximian.com>
15078
15079         * debug-debugger.h
15080         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15081         `mono_method_inflated_offset'.
15082
15083 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15084
15085         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15086         async exceptions into a method.
15087
15088         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15089         purpose of testing whenever the unwinder works at every instruction.
15090
15091 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15092
15093         * mini.c: check accessibility of method used in ldftn (fixes
15094         bug #82635).
15095
15096 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15099
15100         * inssel.brg: Fix a warning.
15101
15102 2007-09-03  Martin Baulig  <martin@ximian.com>
15103
15104         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15105         now takes the `main_method' as argument.
15106
15107 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15108
15109         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15110
15111 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15112
15113         * driver.c: include the cil-coff.h header on Windows.
15114         
15115         Code is contributed under MIT/X11 license.
15116
15117 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15118
15119         * mini.c, driver.c: don't include the cil-coff.h header.
15120
15121 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini.c: flag places that needs fixes fo soft-float support.
15124
15125 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15126
15127         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15128         endian systems (partially from Dean Jenkins, bug #81924).
15129
15130 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15131
15132         * mini.c (check_linkdemand): Remove embedded reference object in
15133         call to LinkDemandSecurityException.
15134         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15135         with an IntPtr instead of a reference object.
15136
15137 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15138
15139         * mini.c (handle_initobj): Handle alignment properly.
15140
15141         * inssel.brg (mini_emit_memset): Ditto. 
15142
15143         * inssel.brg (mini_emit_memcpy): Ditto. 
15144
15145         * inssel-sparc.brg: Ditto.              
15146
15147         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15148
15149 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15150
15151         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15152         exceptions raised in unmanaged code. Fixes part of #82594.
15153
15154 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15155
15156         * mini.c (mono_method_to_ir), declsec.c
15157         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15158
15159 2007-08-22  Martin Baulig  <martin@ximian.com>
15160
15161         * debug-mini.h
15162         (MonoDebuggerThreadInfo): New typedef.
15163         (mono_debugger_thread_table): New global variable.
15164         (mono_debugger_thread_created): New public function.
15165         (mono_debugger_thread_cleanup): New public function.
15166
15167         * debug-debugger.h
15168         (MonoDebuggerInfo):
15169         - removed `get_current_thread' and `lookup_assembly'.
15170         - removed `data_table'.
15171         - added `thread_table'.
15172
15173         * mini.c
15174         (mono_thread_start_cb): Call mono_debugger_thread_created().
15175         (mono_thread_attach_cb): Likewise.
15176         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15177         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15178         initial domain.
15179
15180         * driver.c (mono_main): Move mono_debug_init() up, before calling
15181         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15182
15183 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15186         together when passing several arguments of type double (gives a small
15187         speedup and saves a few bytes of generated code).
15188
15189 2007-08-20  Jb Evain  <jbevain@novell.com>
15190
15191         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15192
15193 2007-08-20  Jb Evain  <jbevain@novell.com>
15194
15195         * mini.c (mono_method_to_ir): throw MethodAccessException
15196         and FieldAccessException instead of InvalidProgramException.
15197
15198 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15199
15200         * mini.c: CoreCLR security checks.
15201
15202         * mini.h: Removed MonoSecurityMode (moved to
15203         metadata/security-manager.h) and mono_security_mode global var
15204         (replaced by set/get functions in security-manager.h).
15205
15206         * driver.c: Added "core-clr-test" security mode for testing.  Used
15207         set-function for setting security mode.
15208
15209 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15210
15211         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15212         the new jit_info_table.
15213
15214         * driver.c: Test code for the new jit_info_table (enabled by the
15215         define MONO_JIT_INFO_TABLE_TEST).
15216
15217 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15218
15219         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15220         detection of call <REG> instruction sequence. Fixes build on freebsd.
15221
15222 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15223
15224         * mini-exceptions.c: Fix a warning.
15225
15226 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15227
15228         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15229         stack overflow handling code on amd64 too.
15230
15231         * mini-exceptions.c (mono_setup_altstack): Make this use 
15232         mono_thread_get_stack_bounds ().
15233
15234         * mini-x86.h: Disable sigaltstack on solaris x86.
15235
15236 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15239
15240 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15241
15242         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15243
15244 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15245
15246         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15247
15248         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15249
15250 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15251
15252         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15253         due to alignment.
15254
15255 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15256
15257         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15258         to be emitted (bug #82281).
15259
15260 2007-08-01  Martin Baulig  <martin@ximian.com>
15261
15262         Merged the `debugger-dublin' branch.
15263
15264         * debug-debugger.h (MonoDebuggerInfo):
15265         Removed the `old_*' compatibility entries.
15266         Added `debugger_version' and `data_table'.
15267         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15268         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15269
15270         * debug-mini.c
15271         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15272         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15273         instead of a `gconstpointer'.
15274         (mono_debugger_insert_method_breakpoint): Return a
15275         `MonoDebugMethodAddressList *'.
15276
15277 2007-06-28  Martin Baulig  <martin@ximian.com>
15278
15279         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15280
15281 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15284         __builtin_frame_address () since it is broken on older gcc versions.
15285
15286 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15289         on the stack overflow handling and made the managed stack overflows
15290         catchable in most cases using soft guard pages.
15291         * exceptions-x86.c: added code to restore the protection in the soft
15292         guard pages at the end of exception handling.
15293
15294 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15297
15298 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15299
15300         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15301         exception handling.
15302
15303 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15304
15305         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15306         signal handling support until it has been ported to the new mechanism.
15307         * mini.c: fixed stack overflow detection and use the new
15308         architecture code  to handle signals on the altstack.
15309
15310 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15311
15312         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15313         stack overflows on the alt stack.
15314
15315 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15316
15317         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15318         stack overflows on the alt stack.
15319
15320 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15321
15322         * exceptions-ppc.c: cleanup preparing for altstack support.
15323
15324 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15325
15326         * exceptions-arm.c: cleanup preparing for altstack support.
15327
15328 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15329
15330         * mini.c (print_jit_stats): Output hazard pointer stats.
15331
15332 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15333
15334         * driver.c, mini.c: Replaced security mode flags with a single
15335         enum variable.
15336
15337 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15338
15339         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15340
15341 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15342
15343         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15344         (which doesn't do anything yet) for activating Core CLR
15345         (Silverlight) security.
15346
15347 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15348
15349         * mini-codegen.c: work around a possible gcc bug on arm.
15350
15351 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15352
15353         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15354         message for platforms that don't support AOT compilation.
15355
15356 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15357
15358         * mini.h, mini.c, driver.c: temporary smcs hack.
15359
15360 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini-arm.h, mini-arm.c: arm EABI fixes.
15363
15364 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15365
15366         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15367         case.
15368
15369         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15370         trampolines taking a method argument.
15371
15372         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15373
15374         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15375         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15376
15377         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15378         JIT compilation throws an exception. Fixes #82050.
15379
15380 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15381
15382         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15383         with the MONO_EXCEPTION_ defines.
15384
15385 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15388         #82117.
15389         
15390         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15391         the cause of an assertion.
15392
15393 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15396         removed.
15397
15398 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15399
15400         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15401         assert. Should fix #82103.
15402
15403 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15404
15405         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15406         here too. Fixes #82095.
15407
15408         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15409         addresses.
15410
15411         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15412
15413         * mini-amd64.h: Enable IMT for amd64.
15414         
15415         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15416
15417 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15418
15419         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15420
15421 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15422
15423         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15424         as soon as check_linkdemand sets an exception_type.
15425
15426 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15427
15428         * mini-x86.c: fixed offsets for IMT call sequence.
15429         * mini-x86.h: enable IMT again.
15430
15431 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * trace.c (mono_trace_enter_method): Decode MonoType too.
15434
15435         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15436
15437         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15438
15439         * mini-amd64.c: Add preliminary IMT implementation.
15440         
15441 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15442
15443         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15444         understand the new IMT-base interface invocation (thanks to
15445         Daniel Nauck for the report and the remote debugging session).
15446
15447 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15448
15449         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15450
15451 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15452
15453         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15454
15455 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15456
15457         * mini-trampolines.c: implement AOT IMT support.
15458         * mini-x86.h: enable IMT support for wider testing.
15459
15460 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15461
15462         * inssel.brg (emit_imt_argument): Add aot support here.
15463
15464         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15465
15466 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15467
15468         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15469         of the IMT implementation, partially from massi, with my
15470         implementation of the bsearch sequence. Disabled by default until
15471         the AOT code is implemented.
15472
15473 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15474
15475         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15476
15477         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15478
15479 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15480
15481         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15482         arch-independent IMT JIT code from Massimiliano
15483         Mantione (massi@ximian.com) with small cleanups from me.
15484
15485 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15486
15487         * Makefile.am: fix svn invocation to get the svn revision to be
15488         independent of the local language (build fix).
15489
15490 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15491
15492         * mini.c (inline_method): Reset cfg->exception_type if the
15493         inlining is aborted.  Fixes: 82049.
15494
15495 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15496
15497         * mini.c: remove assert from exception handling code when exception_ptr
15498         is not set.
15499
15500 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15501
15502         * mini.c (mono_codegen): Add an assert.
15503
15504         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15505         enter and leave code.
15506         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15507
15508 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15509
15510         * mini-ppc.c: fixed memory corruption for localloc(0)
15511         (bug #81852).
15512
15513 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15514         
15515         * mini.c: Fix warnings.
15516
15517 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15518
15519         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15520         to emit better double->int conversions.
15521
15522 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15523
15524         * mini.c: the provided Min/Max optimizations are valid for unisgned
15525         ints.
15526
15527 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15528
15529         * 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
15530
15531 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15532
15533         * mini.c (mono_running_on_valgrind): Add support for reporting the
15534         method and  its boundaries to valgrind.
15535
15536 2007-06-28  Martin Baulig  <martin@ximian.com>
15537
15538         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15539
15540 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15541
15542         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15543
15544         * generic.2.cs: Add new test case.
15545
15546 2007-06-25  Martin Baulig  <martin@ximian.com>
15547
15548         Merged the `debugger-dublin' branch.
15549
15550         * debug-mini.c
15551         (mono_debugger_insert_method_breakpoint): New public method.
15552         (mono_debugger_remove_method_breakpoint): Likewise.
15553         (mono_debugger_check_breakpoints): New static method.
15554         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15555
15556         * debug-debugger.h (MonoDebuggerInfo):
15557         Renamed (to keep backward compatibility in the vtable):
15558         `insert_breakpoint' -> `old_insert_breakpoint'.
15559         `remove_breakpoint' -> `old_remove_breakpoint'.
15560         `create_string' -> `old_create_string'.
15561         `lookup_class' -> `old_lookup_class'.
15562         `lookup_type' -> removed; changed into a dummy field.
15563         `lookup_assembly' -> `old_lookup_assembly'.
15564         Added (same functionality, but different signature):
15565         `create_string', `lookup_class', `lookup_assembly'
15566         Added new:
15567         `get_method_addr_or_bpt', `remove_method_breakpoint',
15568         `runtime_class_init'.
15569
15570         * debug-debugger.c: Merged the `debugger-dublin' branch.
15571
15572 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15575         well.
15576         (peephole_pass): Likewise.
15577
15578 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15579
15580         * driver.c: hopefully make setaffinity work also for ancient
15581         versions of linux.
15582
15583 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15584
15585         * driver.c : win32 build fix.
15586
15587 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15588
15589         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15590         processor if it is set.
15591
15592 2007-06-21  Martin Baulig  <martin@ximian.com>
15593
15594         * debug-mini.h: New file.
15595
15596         * debug-mini.c
15597         (mono_debugger_insert_breakpoint_full): Moved here from
15598         ../metadata/mono-debug-debugger.c.
15599         (mono_debugger_remove_breakpoint): Likewise.
15600         (mono_debugger_breakpoint_callback): Likewise.
15601
15602 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15603
15604         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15605         changes in MonoGenericClass.
15606
15607 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15608
15609         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15610
15611 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15612
15613         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15614         removal of MonoGenericMethod.
15615
15616 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15617
15618         * mini-exceptions.c: hooks for the exception events profiling API.
15619
15620 2007-06-14  Randolph Chung  <tausq@debian.org>
15621
15622         * Makefile.ma: Add hppa target.
15623         * mini-arch.h: Include mini-hppa.h
15624         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15625         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15626         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15627
15628 2007-06-14  Randolph Chung  <tausq@debian.org>
15629
15630         * inssel.brg: Add rules for "chained" compare-branch operations so that
15631         a single compare op can affect multiple branches.  Adjust cost for
15632         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15633         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15634         cost for some rules so that they can more easily be overridden by
15635         per-arch rules (with fixes from lupus).
15636         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15637
15638 2007-06-13  Randolph Chung  <tausq@debian.org>
15639
15640         * mini-ops.h: Reorder branch ops so that they match the order of the
15641         corresponding CEE_* ops.  The code expects them this way.
15642         Add new ops for HPPA target.
15643         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15644
15645 2007-06-13  Randolph Chung  <tausq@debian.org>
15646
15647         * mini-exceptions.c: Handle cases where the stack grows towards
15648         larger addresses.
15649         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15650
15651 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15652
15653         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15654         counter.
15655         * driver.c: explain where a non-matching corlib is found.
15656
15657 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15658
15659         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15660
15661 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15662
15663         * mini-exceptions.c: Generate a method profile leave event during
15664         an exception to ensure that the profiler gets notified.
15665
15666 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15667
15668         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15669         branch.
15670
15671         * cpu-amd64.md: Add long_and/or/xor opcodes.
15672
15673 2007-06-06  Wade Berrier  <wberrier@novell.com>
15674
15675         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15676         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15677         length of instruction shr_imm (expected 8, got 10)
15678
15679 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15682
15683 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15684
15685         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15686         MonoInternalHashTable again (fixed bug in the internal hash table
15687         code).
15688
15689 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15690
15691         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15692         Have to figure out what makes it crash the SWF regression.
15693
15694 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15695
15696         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15697
15698 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15699
15700         * mini.c: optimize out the type check when storing null in a
15701         reference array.
15702
15703 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15704
15705         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15706         MonoInternalHashTable.
15707
15708 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15709
15710         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15711         signed integer methods.
15712
15713 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15714
15715         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15716         permanently since the current approach doesn't work.
15717
15718 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15721         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15722
15723 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15724
15725         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15726         the sreg2==rdx case.
15727         
15728         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15729         account if it contains a rex prefix.
15730         (peephole_pass): Handle OP_FMOVE as well.
15731
15732 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15733
15734         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15735         as it causes regressions.
15736
15737 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15738
15739         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15740         static case as well.
15741
15742         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15743
15744         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15745         (mono_arch_get_this_arg_from_call): Ditto.
15746
15747         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15748
15749         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15750         invoke_impl field.
15751
15752         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15753         (mono_arch_get_this_arg_from_call): Ditto.
15754
15755         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15756         
15757         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15758         try to create optimized invoke code and use that for further invocations. 
15759         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15760
15761         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15762
15763 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15764
15765         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15766         sealed classes or methods.
15767         *devirtualization.cs: tests for the new optimization
15768
15769 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15772         by the update_volatile () function.
15773
15774 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15777         require it.
15778
15779         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15780
15781 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15782
15783         * mini.c: Add configure checks for header files.
15784         * mini-x86.c: Add configure checks for header files.
15785         * trace.c: Add configure checks for header files.
15786         * aot-runtime.c: Add configure checks for header files.
15787         * aot-compiler.c: Add configure checks for header files.
15788         * driver.c: Add configure checks for header files.
15789         * mini-codegen.c: Add configure checks for header files.
15790         
15791         Code is contributed under MIT/X11 license.
15792
15793 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15794
15795         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15796         icompare_imm -128 + op_iclt. Fixes #81703.
15797
15798 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15799
15800         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15801
15802 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15803
15804         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15805         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15806         so that all isinst checks now use "interface_bitmap".
15807
15808 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15809
15810         * cpu-amd64.md (jmp): Fix a warning.
15811
15812         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15813
15814         * basic.cs: Add new regression test.
15815
15816         * basic.cs: Remove test which is now in basic-long.cs.
15817
15818         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15819
15820         * basic-long.cs: Add new test.
15821         
15822 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15823
15824         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15825
15826 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15827
15828         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15829
15830         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15831         places.
15832         
15833         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15834         throwing code a bit.
15835
15836         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15837         the exception throwing code a bit.
15838
15839         * mini-x86.c (get_call_info): Allocate result from a mempool.
15840
15841 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15844
15845         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15846
15847         * mini.h (MonoCompile): Add 'token_info_hash' field.
15848
15849         * mini.c: Save token->method associations during compilation so the AOT 
15850         compiler can use it.
15851         
15852         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15853         which reference generic classes and methods.
15854
15855 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15858
15859         * aot-compiler.c (compile_method): Fix a typo in a comment.
15860
15861         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15862
15863         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15864         everything generic.
15865
15866         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15867
15868 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15869
15870         * mini.h (MonoCompile): Add 'args' field.
15871
15872         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15873         into cfg->args.
15874
15875         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15876
15877 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15880
15881         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15882
15883         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15884         opcodes for some opcodes.
15885
15886         * mini.h *.brg *.c: Use the new opcodes.
15887
15888 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15889
15890         * mini.h: Bumped aot revision.
15891
15892         * inssel.brg: modified code generation of type checks for interfaces
15893         to use the new "MonoClass.interface_bitmap" instead of the old
15894         "MonoClass.interface_offsets".
15895
15896 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15897
15898         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15899
15900 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15901
15902         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15903         64 bit platforms.
15904
15905 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15906
15907         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15908
15909 2007-04-27  Wade Berrier  <wberrier@novell.com>
15910
15911         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15912         mini.h) to fix build.
15913
15914 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15915
15916         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15917         
15918         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15919         causes the corlib unit tests to fail.
15920
15921 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15922
15923         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15924
15925         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15926
15927         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15928         opcodes to the comparison relations.
15929
15930         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15931         opcodes to their types.
15932         
15933         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15934
15935         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15936         it in cfg->arch.cinfo.
15937
15938         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15939
15940         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15941         cfg->cil_offset_to_bb.
15942
15943 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15944
15945         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15946         created becase of initlocals.
15947
15948 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15949
15950         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15951         Sergey Tikhonov <tsv@solvo.ru>.
15952
15953 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15954
15955         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15956
15957 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15958
15959         * cpu-s390.md (break): Correct the length of break instruction.
15960
15961 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini.c: fix a couple of soft-float issues and comments.
15964
15965 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15966
15967         * trace.c (is_filenamechar): - is also a filename char.
15968
15969 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15970
15971         * mini-s390.c: Correct checking for enum type in return value processing.
15972
15973 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15974
15975         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15976         (version.h): Makefile is in the build directory.
15977
15978 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15979
15980         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15981
15982 2007-04-11  Martin Baulig  <martin@ximian.com>
15983
15984         * mini.c (can_access_member): Fix handling of generic classes;
15985         fixes #81259.
15986
15987 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15988
15989         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15990
15991 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15992
15993         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15994
15995 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15996
15997         * mini-codegen.c: make sure the right spill amount is
15998         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15999
16000 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16001
16002         * mini-ppc.c: fixes for the fp_branch_nan test.
16003
16004 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16005
16006         * basic.cs: Comment out new test which still fails on ia64.
16007
16008 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16009
16010         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16011
16012 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16013
16014         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16015
16016 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16017
16018         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16019         on 64 bit machines. Fixes part of #80738.
16020
16021         * basic.cs: Add regression test.
16022
16023 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16024
16025         * inssel.brg basic.cs: Revert previous change to fix build.
16026
16027         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16028         platforms.
16029         
16030         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16031
16032         * basic.cs: Add new regression test.
16033
16034 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16035
16036         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16037         many arguments.
16038
16039 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16040
16041         * cpu-s390x.md: Correct length of break instruction.
16042
16043 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16044
16045         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16046         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16047
16048 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16049
16050         * *.c: Begin WIN64 port.
16051         * mini.c:  Use correct register in profiler.
16052         * mini-amd64.c: No inline assembly on Win64.
16053         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16054         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16055         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16056         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16057         mono_arch_ip_from_context for Win64.
16058         
16059         Contributed under MIT/X11 license.
16060
16061 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * exceptions-amd64.c (seh_handler): Ditto.
16064
16065         * exceptions-x86.c (seh_handler): Fix a memory leak.
16066
16067 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16068
16069         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16070         mini-s390x.c: fixed peephole optimizations to deal
16071         correctly with 1 and 2 byte reload avoidance.
16072
16073 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16074
16075         * cpu-s390.md, cpu-s390x.md: update localloc length.
16076
16077 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16078
16079         * cpu-g4.md: added missing descriptions.
16080
16081 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16082
16083         *  Makefile.am: Add support so the tail tests are not executed on
16084         PowerPC as that is a known limitation of the PowerPC port.
16085
16086 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16087
16088         * runmdesc.bat:  Move to msvc directory.
16089         
16090 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16091
16092         * runmdesc.bat:  Run executable that was produced by the current
16093         target and sent via an argument.
16094         
16095 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16096
16097         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16098         #81102.
16099
16100         * generics.2.cs: Add regression test.
16101
16102 2007-03-09  Wade berrier  <wberrier@novell.com>
16103
16104         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16105
16106 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16107
16108         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16109         AOT code depends on this.
16110
16111 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16112
16113         * mini.c: more precise tracking of types in the eval stack
16114         (part of fix for bug #81044).
16115
16116 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16117
16118         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16119
16120         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16121
16122 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16123
16124         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16125
16126         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16127
16128 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16129
16130         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16131         a pointer on 64 bit systems. Fixes #80190.
16132
16133         * iltests.il: Add new regression test.
16134
16135 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16138
16139 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16140
16141         * trace.c: Remove an erroneous alignemnt check when tracing.
16142           Fixes --trace on OSX86.
16143
16144 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16145
16146         * mini-$(arch).h: initialize SP in context for all the archs.
16147
16148 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16149
16150         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16151         regressions in the thread tests.
16152
16153 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16156         - fixed implementation of LOCALLOC opcode
16157         - implemented non-un compare for floats
16158         - code cleanup
16159         - implementation of FDIV and CKFINITE opcodes
16160         - fixes for latest mono updates
16161         - additional arch opcodes
16162
16163 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16164
16165         * Makefile.am: simplify and merge rules for cross-compilation.
16166
16167 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16168
16169         * local-propagation.c: Actually *apply* the fix for bug 80591...
16170
16171 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16172
16173         * mini-exceptions.c: backuot part of the last change
16174         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16175
16176 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16177         * inssel.brg: Fix bug 59286.
16178
16179
16180 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16181
16182         * mini-exceptions.c: patch from Zoltan to correctly check for
16183         stack boundaries (using the stack register, not the frame register),
16184         fixes bugs #80724, #79717.
16185
16186 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16187
16188         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16189         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16190
16191         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16192         presence of frame pointer elimination.
16193
16194 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16195         
16196         * mini-x86.h: NetBSD UCONTEX_REG defines.
16197
16198 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16199
16200         * inssel-amd64.brg: Fix amd64 build.
16201
16202 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16203
16204         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16205         on amd64.
16206
16207 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16208
16209         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16210         ends.
16211
16212         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16213
16214 2007-01-30 Mark Mason <mason@broadcom.com>
16215
16216            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16217            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16218            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16219            beginning support for CEE_JMP [not quite working yet]
16220            * tramp-mips.c: LMF handling now works
16221         
16222 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16225
16226         * mini.h (NULLIFY_INS): New macro.
16227
16228 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16229
16230         * mini.c: statistical profiler fix for windows, patch
16231         from Tor Lillqvist (tml@novell.com).
16232
16233 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16234         * local-propagation.c: Fix bug 80591.
16235
16236 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16237
16238         * Makefile.am: put back the --export-dynamic option as with
16239         the previous gmodule flags (thanks to Robert Jordan).
16240
16241 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16242
16243         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16244
16245         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16246         simplify and speed up the local register allocator. Also rename some fields
16247         like iassign->vassign.
16248         
16249         * regalloc.c: Remove some functions which are no longer used since their
16250         inlined version is in mini-codegen.c.
16251         
16252         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16253
16254         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16255
16256 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16257
16258         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16259         narrowing. Fixes #80622.
16260
16261         * iltests.il: Add new regresssion test. 
16262
16263 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16264
16265         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16266         debug-debugger.c, debug-debugger.h: warning fixes.
16267         * driver.c: updated copyright year and made it fit in one line.
16268
16269 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16270
16271         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16272
16273 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16274
16275         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16276
16277         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16278
16279         * iltests.il: Add new test for bug #80507.
16280
16281 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16282
16283         * mini-arm.h: use soft-float also on vfp for now.
16284
16285 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16286
16287         * mini.c: fix some more soft-float issues.
16288
16289 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16290
16291         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16292
16293 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16294         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16295         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16296         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16297
16298 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * mini-arm.c: typo fix.
16301
16302 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16303
16304         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16305
16306 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16307
16308         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16309         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16310
16311         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16312
16313         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16314
16315         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16316         
16317         * inssel.brg: Fix a warning.
16318
16319         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16320
16321         * abcremoval.c ssa.c ssapre.c: Update after this change.
16322         
16323         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16324
16325         * dominators.c (df_set): Use mono_bitset_union_fast.    
16326
16327 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16328
16329         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16330         mini-codegen.c: reduce relocations and memory usage for the cpu
16331         description.
16332
16333 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16334
16335         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16336
16337         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16338         to reduce their size.
16339
16340 2007-01-19 Mark Mason <mason@broadcom.com>
16341
16342         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16343         * mini-mips.c: more configuration macros, support long conditional branches, additional
16344         asserts, fix epilog instrumentation.
16345         * mini-mips.h: use standard stack walk
16346         * cpu-mips.md: increase size of div, rem and conditional branches
16347         
16348 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16349
16350         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16351         to cpu spec data.
16352
16353 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16354
16355         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16356         (compile_method): Ditto.
16357
16358         * aot-runtime.c (decode_klass_info): Ditto.
16359
16360         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16361         needed by the code generated by inssel.brg. Also fix a warning.
16362
16363 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16364
16365         * mini.c: deal with enums that become genericinsts by
16366         being nested in a generic class (bug #79956).
16367
16368 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16369
16370         * mini.c: match the generic definition to check for
16371         private access with generic types (bug #78431).
16372
16373 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16374
16375         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16376         to make life easier for people cross-compiling that insist on not
16377         using scratchbox.
16378
16379 2007-01-17 Mark Mason <mason@broadcom.com>
16380
16381         * inssel-long.brg: patch to deal with mips missing flags
16382         * inssel-long32-mips.brg: implement overflow checks
16383         * insset-mips.brg: implement overflow checks
16384         * mini-mips.h: implement conditional exception handling
16385         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16386           Remove unused code, minor cleanups.
16387         * exceptions-mips.c: minor cleanups
16388         * mini-ops.h: add mips conditional exception ops
16389         * cpu-mips.md: add mips conditional exception ops
16390
16391         
16392 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16393
16394         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16395         to deal with mips missing of flags.
16396
16397 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16398
16399         * exceptions-ppc.c: execute fault handlers.
16400
16401 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16402
16403         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16404
16405 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16406
16407         * mini.c: handle also floating point values in initialize_array.
16408
16409 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16410
16411         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16412         array initialization and make it conditional on the intrins option.
16413
16414 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16415
16416         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16417         relocations and put the patch info names close to the enum definition.
16418
16419 2007-01-15 Mark Mason <mason@broadcom.com>
16420
16421         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16422
16423 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16424
16425         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16426
16427 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16428
16429         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16430
16431 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16432
16433         * Makefile.am: distribute the mips sources.
16434
16435 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16436
16437         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16438         directly.
16439
16440 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16441
16442         * cpu-x86.md: back out for now as this triggers other regressions.
16443
16444 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16445
16446         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16447         to eax:edx, so ecx can't get allocated to them (bug #80489).
16448
16449 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16450
16451         * mini.c, mini-exceptions.c: enabled running fault handlers
16452         (bug #80469).
16453
16454 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16455
16456         * driver.c: If nothing fail, do not use the string "failed",
16457         because it makes it very annoying to view test result logs on the
16458         web. 
16459
16460 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16461
16462         * debug-debugger.c (mono_debugger_main): Rename "main" to
16463         "main_method" to prevent a warning.
16464
16465         Remove a warning for unused field.
16466
16467 2006-12-28  Martin Baulig  <martin@ximian.com>
16468
16469         * debug-debugger.c
16470         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16471
16472 2006-12-22  Martin Baulig  <martin@ximian.com>
16473
16474         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16475         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16476         seperate `.mdb_debug_info' section, so we can access it from the
16477         debugger even if the binary is stripped.
16478
16479         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16480         from the `.mdb_debug_info' here to prevent the linker from
16481         removing that section.
16482
16483         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16484         mdb-debug-info64.s.
16485
16486 2006-12-19  Robert Jordan  <robertj@gmx.net>
16487
16488         * mini-x86: enable the code to return small structures in
16489         registers for FreeBSD as well. Fixes bug #80278.
16490         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16491
16492 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * mini-x86.c: align the stack when calling the profiler
16495         function instrumenting the prolog (on OSX).
16496
16497 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16498
16499         * mini.c: emit a break opcode where Debugger.Break () is called.
16500
16501 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16502
16503         * mini.c (mono_method_to_ir): Provide useful information on this
16504         assert, to prevent others from debugging like I did.
16505
16506 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16507
16508         * mini.c: enable code which was incorrectly commented
16509         (bug #80235).
16510
16511 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16512
16513         * mini-x86.c: enable on OSX, too, the code to return small
16514         structures in registers.
16515
16516 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16517
16518         * mini-x86.c: remove the use of the dynamic code manager here, too.
16519
16520 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16521
16522         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16523         mono_debugger_create_notification_function() to use
16524         mono_global_codeman_reserve () instead of a dynamic code manager.
16525
16526 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16527
16528         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16529         ves_array_element_address() jit icall and use a generated
16530         managed method instead (which is about 4 times faster for a rank 3
16531         array access).
16532
16533 2006-11-29  Mark Mason  <mason@broadcom.com>
16534
16535         * basic-calls.cs: additional tests for passing
16536         structures as function arguments.
16537
16538 2006-11-29  Mark Mason  <mason@broadcom.com>
16539
16540         * mini-mips.h: disable custom exception handling
16541         * mini-mips.c: throw/rethrow should use jalr to call
16542         exception stubs.  Fixed bug with passing structures
16543         by value. More support for tracing floating point
16544         functions.
16545
16546 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16547
16548         * mini.c: fixed typo in the soft-float ldind.r4 handling
16549         (bug #80086).
16550
16551 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16552
16553         * mini.c, mini.h, driver.c: added --runtime command line
16554         option to select a different runtime than the autodetected one.
16555         * jit.h: added API for embedders to initialize with a specific
16556         runtime version.
16557
16558 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini.c: handle also boxing of r4 values (bug #80024).
16561
16562 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16563
16564         * mini-ppc.c: force indirect calls until we reserve
16565         enough address space for all the generated code.
16566
16567 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16568
16569         * exceptions-arm.c: workaround bugs in the libc definition
16570         of struct ucontext.
16571
16572 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16573
16574         * inssel.brg: fixes from me and Mark Mason.
16575
16576 2006-11-23  Dick Porter  <dick@ximian.com>
16577
16578         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16579         semaphore display now we've fixed the initial value
16580
16581 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16582
16583         * inssel.brg: partially revert the last change to fix the build.
16584
16585 2006-11-21  Mark Mason  <mason@broadcom.com>
16586
16587         * inssel.brg: Add and use compare-and-branch macros to support
16588         architectures that do not have condition code registers (ie. MIPS).
16589         * *-mips.{c,brg,md}: Fix copyright statements
16590
16591 2006-11-20  Mark Mason  <mason@broadcom.com>
16592
16593         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16594         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16595         * mini.h: Added declaration for mono_print_ins()
16596         * mini-codegen.c: added ins_spec initializer for MIPS
16597         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16598         vreg to be virtual and hreg to be non-virtual.
16599         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16600         is not yet working/implemented correctly.
16601         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16602         non-static, fixup calls to print_ins() from other parts in the file.
16603
16604 2006-11-20  Mark Mason  <mason@broadcom.com>
16605
16606         * basic-calls.cs: added tests for passing structures as arguments
16607         to calls.
16608
16609 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16610
16611         * inssel-long32.brg: optimize signed division by power of two.
16612
16613 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16614
16615         * mini-arm.c: added support for interworking with thumb code
16616         (mono must be still be built using the ARM instruction encoding).
16617
16618 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16619
16620         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16621         verifier has different rules for it.   Fixes a few verifier issues
16622         in the test suite.
16623
16624         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16625         at the end, so people know what happened.
16626
16627 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * brach-opts.c: in optimize_exception_target() make sure we
16630         are in a catch clause (fixes bug #79871).
16631
16632 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16633
16634         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16635         more soft-float support fixes.
16636
16637 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16638
16639         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16640         that are passed half on the stack and half in registers.
16641
16642 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16643
16644         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16645         more mips integration work from Mark E Mason 
16646         <mark.e.mason@broadcom.com>.
16647
16648 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16649
16650         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16651         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16652         tramp-mips.c: added sources for the mips port, not
16653         integrated in the build yet. Contributed by
16654         Mark E Mason <mark.e.mason@broadcom.com>.
16655
16656 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16657
16658         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16659
16660 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16661
16662         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16663         put the soft-float rules in its own file since it seems to
16664         break s390 compilation.
16665
16666 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16667
16668         * mini-arm.c: fixed wrnings.
16669
16670 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16671
16672         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16673         inssel-arm.brg: ARM support for soft-float.
16674
16675 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16676
16677         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16678         loads and stores of 32 bit fp values.
16679
16680 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16681
16682         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16683
16684         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16685         works. Fixes #79852 and #79463.
16686
16687 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16688
16689         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16690         more soft-float support WIP and fixes.
16691
16692 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * mini-arm.c: some VFP updates.
16695
16696 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * mini-exceptions.c: 0 is a valid local var offset in some
16699         architectures, don't assert (bug #78508).
16700
16701 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16702
16703         * exceptions-arm.c: fixed off by one error in stack walk code.
16704
16705 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16706
16707         * mini.h, mini.c: more precise tracking of type load exceptions.
16708
16709 2006-11-03  Robert Jordan  <robertj@gmx.net>
16710
16711         * Makefile.am: [WIN32] Add monow.exe target.
16712         * driver.c: [WIN32] Don't detach the console when debugging.
16713         Fixes bug #79797.
16714         
16715 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16716
16717         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16718
16719 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16720
16721         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16722
16723         * driver.c (mini_regression): Fix --regression with AOT.
16724
16725         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16726
16727 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16728
16729         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16730
16731         * mini-sparc.h: Don't use sigaction on sparc/linux.
16732
16733         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16734
16735         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16736
16737         * mini-exceptions.c: Add proper include files for getpid ().
16738
16739 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16742         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16743         method.
16744
16745         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16746         name cache to reduce its size.
16747
16748         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16749
16750 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16751
16752         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16753         the mono_lmf TLS variable.
16754
16755         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16756         trampoline lmf frames.  
16757
16758         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16759
16760 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16761
16762         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16763         the mono_lmf TLS variable.
16764
16765         * mini-exceptions.c: Access the LMF structure through accessors.
16766
16767         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16768         variable instead of in jit_tls->lmf.
16769
16770         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16771         
16772         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16773         trampoline lmf frames.
16774
16775         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16776
16777 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16778
16779        * mini.c trace.c mini-x86.c: Revert these too.
16780         
16781        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16782        signature change.
16783
16784 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16785
16786         * genmdesc.c: removed now dead code.
16787
16788 2006-10-09  Robert Jordan <robertj@gmx.net>
16789
16790         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16791
16792 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16793
16794         * mini.h: do not leave gaps in the opcode values.
16795
16796 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16797
16798         * jit-icalls.h: flag functions as internal here, too.
16799
16800 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16801
16802         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16803         functions with the internal attribute.
16804
16805 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16806
16807         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16808
16809 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16810
16811         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16812         for soft-float.
16813
16814 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16815
16816         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16817         tail calls as on other platforms.
16818
16819         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16820
16821         * iltests.il: Add a few tailcall tests.
16822
16823 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16824
16825         * driver.c: fix loop for old compilers (bug #79521).
16826
16827 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16828
16829         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16830
16831         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16832
16833         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16834         metadata without any code.
16835
16836         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16837         more precise debugging information using gdb.
16838
16839 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16840
16841         * inssel-ia64.brg: Make the helper methods static.
16842
16843 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16844
16845         * inssel-x86.brg: make the helper methods static.
16846
16847 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16848
16849         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16850
16851 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16852
16853         * mini.c: updates for monoburg changes.
16854         * inssel.brg: make a few helper functions static as they should.
16855
16856 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16857
16858         * Makefile.am: Move mini-codegen.c to common_sources.
16859
16860 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16861
16862         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16863         instructions.
16864         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16865         mini-ppc.h: port to use the common local register allocator.
16866
16867 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16868
16869         * mini.h: Remove the comment too then.
16870
16871 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16872
16873         * mini.h: put back backend.data which is to be used shortly and
16874         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16875         pointers on 4 byte boundaries it'd have much bigger issues running
16876         and you can ifdef it out anyway.
16877
16878 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16879
16880         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16881         MonoInst size by 4 bytes on 64 bit machines.
16882
16883 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16884
16885         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16886         replacement with more meaningful field names. Arch maintainers, please
16887         check the assigned names are good enough for your arch.
16888
16889 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16892         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16893
16894 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16895
16896         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16897         relocations and memory requirements, put the optimization flags
16898         definitions in their own file.
16899
16900 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16903
16904         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16905
16906 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16907
16908         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16909
16910 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16911
16912         * inssel.brg: use the correct function to get the size of an item
16913         in an array, given an element class.
16914         * aot-compiler.c: do not access class->class_size directly.
16915
16916 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16917
16918         * mini.h, debug-mini.c: added a debugging function to print
16919         info about local variables and arguments in a jitted method.
16920
16921 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16924
16925         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16926
16927 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16928
16929         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16930         inner and outer loops when passing vtypes.
16931
16932 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16933
16934         * mini-ppc.c: take into account the cpu errata for cache flushing
16935         which caused some random errors (bug #79381).
16936
16937 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16940         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16941
16942 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16945         loaded.
16946
16947         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16948         freebsd ports tree.
16949
16950         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16951         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16952
16953         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16954         displacement.
16955
16956 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16957
16958         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16959
16960 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16963         macro does not have to be changed during debugging.
16964
16965         * 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>.
16966
16967         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16968
16969         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16970         
16971         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16972         MONO_ARCH_NO_EMULATE_MUL is defined.
16973
16974         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16975
16976         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16977
16978         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16979
16980         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16981         
16982 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16983
16984         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16985         stuff to mini-exceptions.c where it is used.
16986
16987         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16988         setup code, the real one is in mini-exceptions.c.
16989
16990         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16991         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16992         some changes from the freebsd ports tree.
16993
16994         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16995         constants.
16996         
16997         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16998
16999 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17000
17001         * mini.c: on Linux, check for /proc to be mounted
17002         (bug# 79351, novell bug#201204).
17003
17004 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17005
17006         * mini.c: handle cases where pthread_attr_getstack() behaves
17007         incorrectly (bug #78096).
17008
17009 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17010
17011         * mini-arm.c: support larger stack frames (bug #79272).
17012
17013 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17014
17015         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17016
17017         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17018         tokens.
17019
17020         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17021         mono_class_from_name () to find a class from its name.
17022
17023         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17024
17025 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17026
17027         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17028
17029 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17030
17031         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17032
17033 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17034
17035         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17036         callinfo->trampoline.
17037
17038         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17039         fixes #79271.
17040         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17041         future.
17042
17043 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17044
17045         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17046
17047 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17048
17049         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17050         stats.method_trampolines, it is already done by the generic trampoline code.
17051
17052         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17053         
17054 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17057
17058         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17059
17060         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17061
17062         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17063         
17064         * mini.c (print_jit_stats): Print new stats.
17065
17066         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17067
17068 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17069
17070         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17071         Address on two dimensional arrays. Fixes #78729.
17072
17073         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17074
17075         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17076         a method.
17077
17078         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17079
17080         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17081         #79130.
17082         
17083         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17084         a race condition.
17085         (mini_get_ldelema_ins): Ditto.
17086
17087 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17088
17089         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17090         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17091         Fixes #79213.
17092
17093 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17094
17095         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17096         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17097
17098         * exceptions-s390x.c: Cosmetic change.
17099
17100         * tramp-s390.c: Fix warning.
17101
17102         * cpu-s390.md: Correct length of mul_imm.
17103
17104 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17105
17106         * aot-compiler.c: added binary writer with ELF backend
17107         implementation (only on Linux/x86 for now).
17108
17109 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * Makefile.am: Don't run net 2.0 AOT tests.
17112
17113         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17114         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17115
17116         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17117
17118 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17119
17120         * aot-compiler.c: simplified and refactored the asm-writing code
17121         to allow different backends.
17122
17123 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17124
17125         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17126
17127         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17128         little. Share patches of type TYPE_FROM_HANDLE as well.
17129
17130         * mini.c (mono_patch_info_equal): New helper function.
17131         (mono_patch_info_hash): Ditto.
17132
17133         * aot-compiler.c (emit_method_code): Fix s390 build.
17134
17135         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17136         is not handled because it is stored as a flag and not as a type ctor. Fixes
17137         #79016.
17138
17139 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17140
17141         * aot-compiler.c: Fix computation of GOT slot statistics.
17142         
17143         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17144         Also remove support for not PIC AOT.
17145
17146         * mini.h: Bump AOT file format version.
17147
17148         * objects.cs: Add a test for #78990.
17149
17150         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17151         (peter.dettman@iinet.net.au). Fixes #79087.
17152
17153         * basic-long.cs: Add a test for the above.
17154
17155 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17156
17157         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17158         
17159         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17160         code somewhat.
17161
17162 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17163
17164         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17165         exceptions.
17166
17167 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17168
17169         * mini.c: Don't verify COM proxy invoke calls
17170         
17171
17172 2006-08-10  Dick Porter  <dick@ximian.com>
17173
17174         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17175         which process is holding semaphores locked.
17176
17177 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17178
17179         * mini-ia64.c mini-amd64.c: Fix #79027.
17180
17181         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17182
17183         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17184
17185         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17186         implicit arguments in a vararg call. Fixes #79027.
17187
17188 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17191         (mono_get_array_new_va_signature): Ditto.
17192
17193 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17194
17195         * aot-runtime.c: Call init_plt lazily.
17196
17197         * inssel-long.brg: Fix unsigned long->int conversion.
17198
17199         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17200
17201         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17202         that most data is now in the .rss/.data section.
17203
17204 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17205
17206         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17207
17208         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17209
17210         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17211
17212         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17213
17214         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17215         virtual call. Fixes #79010.
17216
17217         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17218         and use the result as the this argument in the real call.
17219
17220         * generics.2.cs: Add a new test for #79010.
17221         
17222 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17223
17224         * mini-x86.c: Fix a warning.
17225
17226         * aot-compiler.c: Add a bunch of statistics.
17227
17228         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17229
17230 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17231
17232         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17233
17234 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17235
17236         * 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>.
17237
17238 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17239
17240         * mini.c (mono_method_to_ir): Obtain the original method in the
17241         CIL stream and use this to perform validation.
17242
17243         Fixed: #78816
17244
17245 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17246
17247         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17248         (mono_arch_call_opcode): Ditto.
17249
17250         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17251         #78826.
17252
17253         * mini.c (mono_patch_info_dup_mp): New helper function.
17254         
17255         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17256         compilation. Fixes #78827.
17257
17258 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17259
17260         * declsec.c: Use original security informations for
17261           MONO_WRAPPER_MANAGED_TO_MANAGED.
17262
17263 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17264
17265         * mini.c: Allow Com Interop methods/classes and
17266         don't verify COM wrapper calls
17267         
17268
17269 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17270
17271         * inssel-long32.brg: Fix long->i4 checked conversion.
17272
17273         * exceptions.cs: Add a test for the above.
17274
17275 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17278
17279         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17280         leaks.
17281
17282         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17283         #78775.
17284
17285 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17286
17287         * mini.c: Fix solaris/x86 exception handling.
17288
17289         * Makefile.am: Get rid of $(ICU_LIBS).
17290
17291 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17292
17293         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17294         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17295         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17296
17297         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17298
17299         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17300         this function causes a SIGSEGV.
17301
17302 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17303
17304         * mini.c: Remove unused solaris/x86 includes.
17305
17306 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17307
17308         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17309
17310 2006-06-20  Jb Evain  <jbevain@gmail.com>
17311
17312         * cpu-g4.md: fix max length of start_handler instruction.
17313
17314 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17315         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17316
17317 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17318         * ssa.c: Fixed bug 78653 for SSA based deadce.
17319         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17320         MonoInst.flags, used in SSA based deadce.
17321         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17322         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17323
17324 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17325
17326         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17327         it can end up using non executable memory on ppc64 systems
17328         running ppc32 userspace (fix from Johannes Berg).
17329
17330 2006-06-14  Dick Porter  <dick@ximian.com>
17331
17332         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17333         4.1.1
17334
17335 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17336         * mini.c: Made so that inline is locally disabled if it would
17337         trigger a .cctor, because too many apps depend on this behavior
17338         (which seems to be also the one of the MS CLR).
17339
17340 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17341
17342         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17343         No idea why this worked before.
17344
17345         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17346         which branch to outer exception clauses since they could skip the
17347         inner finally clauses. Fixes #78633.
17348
17349         * exceptions.cs: Add a test for the above.
17350
17351         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17352         Fixes #78629.
17353
17354         * iltests.il: Add a test for the above.
17355
17356 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17357
17358         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17359         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17360
17361         * iltests.il: Add a test for the above.
17362
17363 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17364
17365         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17366         
17367         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17368         methods as instrinsics.
17369
17370 2006-06-09  Wade Berrier <wberrier@novell.com>
17371
17372         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17373         (simple-cee-ops.h ssapre-mini-ops.h)
17374
17375 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17376
17377         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17378         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17379         instruction).
17380         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17381         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17382
17383 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17384
17385         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17386
17387 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17388
17389         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17390         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17391         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17392         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17393         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17394         of opcodes, so that bug 78549 should not happen again.
17395         * ssapre.c: Updated to use the renamed files.
17396
17397 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17398
17399         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17400         in OP_ATOMIC_EXCHANGE_I4.
17401
17402 2006-06-07  Wade Berrier <wberrier@novell.com>
17403
17404         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17405         in mono_debugger_create_notification_function)
17406
17407 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17408
17409         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17410         
17411         * mini.c (type_from_stack_type): Disable some changes which do not
17412         seem to work.
17413
17414         * driver.c: Reenable opts.
17415
17416         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17417         of the evaluation stack.
17418         
17419         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17420         evaluation stack trace at entry to the bblock.
17421
17422         * mini.c (merge_stacks): New function to perform verification of stack merges.
17423         Turned off by default.
17424
17425         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17426         STACK_MP.
17427         
17428 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17429
17430         * local-propagation.c: Fixed bug 78549.
17431
17432 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17433
17434         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17435
17436 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17437
17438         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17439         tramp-arm.c, tramp-ia64.c
17440         (mono_debugger_create_notification_function): Update signature to
17441         new signature and use new protocol for creating the notification
17442         function.  
17443
17444         Should fix the build.
17445
17446 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17447
17448         * exceptions-ppc.c (mono_jit_walk_stack)
17449         (ves_icall_get_frame_info): Fix the build
17450
17451 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17452
17453         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17454
17455 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17456
17457         * il2tests.2.il: New file for generics CIL tests.  Add test for
17458         #78019.
17459         * Makefile.am: Update.
17460
17461         Fix #78019
17462         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17463         to nullable types.
17464
17465 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17466
17467         * aliasing.c: Fixed bug 78311.
17468
17469 2006-05-29  Martin Baulig  <martin@ximian.com>
17470
17471         * mini-exceptions.c (mono_find_jit_info): When computing the
17472         native offset, check whether we're actually inside the method's
17473         code; call mono_debug_print_stack_frame() to format the frame.
17474         (ves_icall_System_Exception_get_trace): Call
17475         mono_debug_print_stack_frame() to format the stack frame.
17476         (ves_icall_get_trace): Update to the new debugging API.
17477         (mono_jit_walk_stack_from_ctx): Likewise.
17478         (ves_icall_get_frame_info): Likewise.
17479
17480         * mini.c (get_method_from_ip): Use the new debugging API.
17481         (mono_print_method_from_ip): Likewise.
17482
17483         * exceptions-ppc.c
17484         (mono_jit_walk_stack): Use the new debugging API.
17485         (ves_icall_get_frame_info): Likewise.   
17486
17487 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17488
17489         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17490
17491 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17492
17493         * mini.c: Added "limitator" to inline for debugging.
17494
17495 2006-05-24  Martin Baulig  <martin@ximian.com>
17496
17497         * debug-debugger.c (mono_debugger_init): Create a private,
17498         malloc()-based code manager for the notification function and
17499         intentionally leak it on exit.  This fixes the crash-on-exit race
17500         condition.
17501
17502         * tramp-amd64.c
17503         (mono_debugger_create_notification_function): Added
17504         `MonoCodeManager *' argument.
17505
17506         * tramp-x86.c
17507         (mono_debugger_create_notification_function): Added
17508         `MonoCodeManager *' argument.
17509
17510 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17511
17512         * aliasing.c: Fixed 64 bit issue.
17513         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17514         default since all known bugs are fixed (one more time!).
17515
17516 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17517
17518         * mini.c: write barrier support.
17519
17520 2006-05-23  Martin Baulig  <martin@ximian.com>
17521
17522         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17523         check at the top of the file.
17524
17525 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17526
17527         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17528         reverting changes without reason and without changelog entries.
17529
17530 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17531
17532         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17533         to a few opcodes. Fixes #78439.
17534
17535         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17536         consistency with other archs.
17537
17538         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17539
17540 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17541
17542         * debug-debugger.c: fix the build.
17543
17544 2006-05-17  Martin Baulig  <martin@ximian.com>
17545
17546         * debug-debugger.c
17547         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17548         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17549         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17550         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17551
17552 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17553
17554         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17555
17556 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17557
17558         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17559         MONO_TYPE_GENERICINST.
17560         
17561         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17562         MONO_TYPE_GENERICINST.
17563
17564 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17567         #78325.
17568
17569 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17570
17571         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17572         mempool.
17573         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17574
17575 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17576
17577         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17578         mono_trace_cleanup ().
17579
17580         * iltests.il: Fix problem with the newly added test.
17581
17582         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17583         due to register constraints, free up the previous hreg. Fixes #78314.
17584
17585         * iltests.il: Add new test for #78314.  
17586
17587         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17588         Interlocked.Add. Fixes #78312.
17589
17590         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17591         
17592 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17595
17596 2006-05-05  Martin Baulig  <martin@ximian.com>
17597
17598         * debug-mini.c (mono_debug_open_block): New method.
17599
17600         * mini-amd64.c
17601         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17602         the beginning of each basic block.
17603
17604         * mini-x86.c
17605         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17606         the beginning of each basic block.
17607
17608 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17609
17610         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17611         default until I understand why they break the build on amd64.
17612
17613 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17614
17615         * mini.c (mini_cleanup): Call mono_cleanup ().
17616
17617         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17618         errors.
17619
17620 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17621
17622         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17623         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17624         default since all known bugs are fixed, and I cannot reproduce bug
17625         77944... I'm asking Matt Hargett to test again after this commit.
17626
17627 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17628
17629         * mini-codegen.c: Fixed typo that thrashed inline.
17630
17631 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17632
17633         * dominators.c (compute_dominators): Avoid using a worklist since
17634         it is not correct in some cases. Instead, iterate over all bblocks as
17635         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17636
17637 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17638
17639         * mini.c (mono_jit_compile_method_inner): Use
17640         mono_prepare_exception_from_error that resets the value
17641         internally.
17642
17643 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17644
17645         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17646         
17647 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17648
17649         * aliasing.c: Fixed bug 78210.
17650
17651 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17652
17653         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17654         default until all their problems (or the ones they trigger) are fixed.
17655
17656 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17657
17658         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17659         
17660         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17661         as loaded only after resolving patches since that could invoke the same method.
17662
17663         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17664
17665         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17666         functions.
17667
17668         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17669         AOT loader.
17670
17671         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17672         stack.
17673
17674         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17675         made from AOT code through the PLT table.
17676
17677         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17678         holding the plt offset when a call is made to the aot plt trampoline.
17679         
17680 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17681
17682         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17683         amd64 AOT support.
17684
17685         * Makefile.am (common_sources): Fix build breakage.
17686
17687         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17688         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17689         intra-assembly calls if possible.
17690         
17691         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17692
17693         * mini-trampolines.c: Handle PLT entries.
17694
17695         * mini.c: Avoid creating a GOT var for calls.
17696
17697         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17698         from mscorlib code.
17699
17700         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17701         from mscorlib code.
17702
17703         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17704         AOT code.       
17705
17706         * mini.h: Bump AOT file format version.
17707         
17708         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17709         covers more cases.
17710
17711 2006-04-25  Martin Baulig  <martin@ximian.com>
17712
17713         * driver.c: Disable copyprop, consprop and inline when running
17714         inside the debugger.
17715
17716 2006-04-25  Martin Baulig  <martin@ximian.com>
17717
17718         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17719         with `get_current_thread' and added `detach'.
17720         (MonoDebuggerMetadataInfo): Added `thread_size',
17721         `thread_tid_offset', `thread_stack_ptr_offset' and
17722         `thread_end_stack_offset'.
17723
17724 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17725
17726         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17727         aot-runtime.c.
17728
17729         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17730         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17731
17732         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17733
17734         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17735
17736         * aot.c: Add support for ADJUSTED_IID.  
17737
17738 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * aot.c (emit_method_order): Don't align method_order_end.
17741
17742         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17743         the interface ID changes.
17744
17745 2006-04-21  Dick Porter  <dick@ximian.com>
17746
17747         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17748         cleaning up a thread.  Fixes the new part of bug 77470.
17749
17750 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17751
17752         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17753         to managed wrapper.
17754                      
17755 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17756
17757         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17758         
17759         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17760         SIGSEGV. Fixes #78072.
17761
17762         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17763         unregister our SIGABRT handler.
17764
17765 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17766
17767         * mini.c: Disabled inline where it can alter the call stack in a
17768         way visible from managed code.
17769         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17770         default.
17771
17772 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17773
17774         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17775         on other platforms. Fixes #78089.
17776
17777 2006-04-13  Martin Baulig  <martin@ximian.com>
17778
17779         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17780         determine whether we're inside the debugger.
17781
17782         * debug-debugger.h
17783         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17784
17785 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17786
17787         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17788         handler clauses. Fixes #78024.
17789
17790         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17791         in the CALL_MEMBASE opcodes. Fixes #78088.
17792         (mono_arch_get_vcall_slot_addr): Ditto.
17793
17794 2006-04-10  Martin Baulig  <martin@ximian.com>
17795
17796         * debug-debugger.c: The thread handling code has now been moved
17797         into ../metadata/threads.c.
17798
17799 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17800
17801         * driver.c (mono_main): Fix --with-gc=none build.
17802
17803         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17804         (mono_spillvar_offset_float): Ditto.
17805         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17806         hreg, not when its !global, since on ia64, there is a third category: stacked
17807         registers.      
17808
17809 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17810
17811         * mini.c: set MonoInst->klass for load field address and a few other
17812         places.
17813
17814 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17815
17816         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17817
17818 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17819
17820         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17821         the branch opt changes.
17822
17823 2006-04-06  Dick Porter  <dick@ximian.com>
17824
17825         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17826         
17827         * wapihandles.c (mini_wapi_seminfo): 
17828         * driver.c (mono_main): Add semaphore info option
17829
17830 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17831
17832         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17833         branch optimization changes. Fixes #78009.
17834
17835 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17836
17837         * mini.c: ignore accessibility of methods in managed->native wrappers.
17838
17839 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17840
17841         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17842         
17843         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17844
17845 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17846
17847         * mini.c: Modify the branch optimizations to preserve the invariant that
17848         the entries inside the in_bb and out_bb arrays are unique.
17849         (mono_unlink_bblock): Avoid creation of new arrays.
17850
17851 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17852
17853         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17854         change (#77992).
17855
17856 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17857
17858         * mini.c (optimize_branches): Remove the "optimizations" in
17859         the cbranch1/cbranch2 -> branch cases which were causing several
17860         problems in the past. Fixes #77986.
17861
17862 2006-03-31  Chris Toshok  <toshok@ximian.com>
17863
17864         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17865         default optimizations :(
17866
17867 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17868
17869         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17870         branch.
17871
17872 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17873
17874         * local-propagation.c: Added comments to structs and removed
17875         "Mono" prefixes from local tree mover types.
17876
17877 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17878
17879         * Makefile.am (arch_sources): Define this for each architecture so 
17880         libmono_la_SOURCES is defined in one place.
17881
17882 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17883
17884         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17885         from handles/.
17886
17887 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * driver.c: print the GC name supplied by configure.
17890
17891 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17892
17893         * local-propagation.c: Added tree mover, and moved here all the
17894         local propagation code from mini.c
17895         * mini.c: Added support for treeprop, and moved all the local
17896         propagation code to local-propagation.c
17897         * mini.h: Added support for treeprop
17898         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17899         treeprop, inline and deadce by default
17900         * Makefile.am: Added local-propagation.c
17901
17902 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17903
17904         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17905
17906 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17907
17908         * debug-debugger.c: make it compile without the Boehm GC.
17909
17910 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17911
17912         * mini.c: fixed issue with mismatch when an icall is registered
17913         with multiple names but same address.
17914
17915 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17916
17917         * declsec.c, mini-exceptions.c: use write barrier to set reference
17918         fields of managed objects.
17919
17920 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17921
17922         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17923         (can_access_internals): Fix a warning.
17924
17925         * mini.c (print_method_from_ip): Rename this to 
17926         mono_print_method_from_ip so it gets exported.
17927
17928         * trace.c: Deal with strings inside StringBuilder's containing garbage
17929         and fix memory leaks. Fixes #77848.
17930
17931 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17932
17933         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17934         fixes #77787.
17935
17936 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17937         
17938         * mini-s390.c: Remove OP_X86_TEST_NULL.
17939
17940 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17941
17942         * mini.c: use the correct GetHashCode() for the moving collector.
17943
17944 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17945
17946         * liveness.c: Regalloc spill cost tuning.
17947
17948 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17949         
17950         * mini-s390x.h: Correct S390_LONG macro.
17951
17952         * mini-s390x.c: Cleanup unused code.
17953
17954 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17955
17956         * jit-icalls.h: New file.
17957
17958         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17959         icalls and include that instead of including jit-icalls.c.
17960
17961         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17962         OP_X86 opcodes.
17963
17964 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17965
17966         * mini.c: when checking for member accessibility, also check for
17967         friend assemblies and for explicit interface implementations.
17968
17969 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17970
17971         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17972
17973         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17974
17975         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17976         common cases are done first.    
17977
17978         * mini-ops.h: Only define platform specific opcodes on the given platform.
17979
17980         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17981         branch.
17982         
17983 2006-03-14  Martin Baulig  <martin@ximian.com>
17984
17985         Revert Paolo's change from r57348:
17986
17987         * mini.h: don't use gboolean for bitfields.
17988         * mini.c: verifier changes for fields and methods accessibility.
17989
17990 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17991
17992         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17993
17994         * mini-s390x.c: Fix conv_r_un.
17995
17996         * cpu-s390, cpu-s390x.md: Fix lengths.
17997
17998 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17999
18000         * mini.c: nested types have access to all the nesting
18001         levels, not just the enclosing types.
18002
18003 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * mini.c: added a few more verification checks.
18006
18007 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18008
18009         * liveness.c: Merge optimizations from the linear-il branch.
18010
18011 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18012
18013         * mini-ia64.c (emit_call): Add a comment.
18014
18015         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18016
18017         * tramp-ia64.c: Fix some warnings.
18018
18019 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18020
18021         * mini.h: don't use gboolean for bitfields.
18022         * mini.c: verifier changes for fields and methods accessibility.
18023
18024 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18025
18026         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18027         lazy icall wrapper changes.
18028
18029         * dominators.c: Replace all the dominator algorithms with faster
18030         ones from the linear-il branch.
18031
18032         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18033         the mempool.
18034
18035         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18036         common cases are done first.
18037
18038         * mini-amd64.c: Fix some warnings.
18039
18040         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18041         from the mempool.
18042
18043         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18044         added code.
18045
18046         * mini.h: Add a missing prototype.
18047
18048 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18049
18050         * mini.c: Compile icall wrappers lazily.
18051
18052         * mini-codegen.c: Use printf instead of g_print since its much faster.
18053
18054         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18055         function.
18056
18057         * mini.c (optimize_branches): Cache the negative result from 
18058         remove_block_if_useless ().
18059
18060         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18061         Also fix some bblock linking issues.
18062
18063         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18064         assembly files.
18065
18066         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18067
18068         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18069         accessed fields first, for better cache behavior.
18070         
18071 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18072
18073         * mini.c: speedup IList<T> array accesses.
18074
18075 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18076
18077         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18078         inline_costs counter. Fixes #77190.
18079
18080 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18081
18082         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18083         trace messages. Fixes #77706.
18084
18085 2006-03-04  Martin Baulig  <martin@ximian.com>
18086
18087         * tramp-amd64.c, tramp-x86.c
18088         (mono_debugger_create_notification_function): Use
18089         mono_global_codeman_reserve() to allocate a buffer at runtime and
18090         return it.
18091
18092         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18093
18094         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18095         notification function at runtime and then call `initialize' in the
18096         `MONO_DEBUGGER__debugger_info' vtable.
18097
18098 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18099
18100         * iltests.il: Fix a visibility problem.
18101
18102 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18103
18104         * driver.c, mini.c: add hooks for the counters API.
18105
18106 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18107
18108         * driver.c: show disabled options.
18109
18110 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * linear-scan.c: always use cost-driven selection.
18113
18114 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18115
18116         * jit-icalls.c (helper_compile_generic_method): Revert change from
18117         2006-02-24.
18118
18119 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18120
18121         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18122
18123 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18124
18125         * inssel.brg: style fixes, mostly to force the updated monoburg
18126         to run for people using svn.
18127
18128 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18129
18130         * mini.c: match monoburg changes.
18131
18132 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18133
18134         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18135         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18136         declaration in the header file.
18137
18138 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18139
18140         * helpers.c: reduce relocations and mem usage.
18141
18142 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18143
18144         * mini.h, mini-codegen.c: disable logging features if
18145         requested by configure.
18146
18147 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18148
18149         * mini.c: tiny verifier changes.
18150
18151 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18152
18153         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18154         cpu-pentium.md: stack alignment changes for osx/x86,
18155         partially from Geoff Norton <gnorton@customerdna.com>.
18156
18157 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18158
18159         * jit-icalls.c (helper_compile_generic_method): Update to changes
18160         in metadata/class.c.
18161
18162 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18163         
18164         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18165         
18166         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18167         interface calls with large offsets.
18168
18169 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18170
18171         * jit-icalls.c (helper_compile_generic_method): Document the
18172         special-case we depend on so that we can inflate the method twice
18173         with the same context with no bad side-effects.
18174
18175 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18176
18177         * mini-x86.c, mini-amd64.c: fix for case when xen support
18178         is disabled.
18179
18180 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18181
18182         * mini-x86.c, mini-amd64.c: generate code to access tls items
18183         in a faster way for Xen systems.
18184
18185 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18186
18187         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18188         updates and compilation fixes for the OSX/x86 port, mostly from
18189         Geoff Norton <gnorton@customerdna.com>.
18190
18191 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18192
18193         * inssel.brg: faster interface call implementation
18194         to sync with the interface_offsets MonoVTable changes.
18195
18196 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18197
18198         * mini.c: more verification checks.
18199
18200 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18201
18202         * mini.c: added a few more verification checks.
18203
18204 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18205
18206         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18207         facility on the processor and use it if available.
18208
18209 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18210
18211         * driver.c, aot.c, mini.c: throw exception if the IL code is
18212         invalid or unverifiable.
18213
18214 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18215
18216         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18217         m.StructField.
18218
18219 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18220
18221         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18222
18223 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18224
18225         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18226         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18227         handling of instantiated generic valuetypes.
18228
18229 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18230
18231         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18232         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18233         instead.
18234
18235         * generics.2.cs: Revert the nullable reftypes tests.
18236
18237 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18238
18239         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18240         using __builtin_frame_address (1) as it doesn't work in the presence
18241         of optimizations. Hopefully fixes #77273.
18242
18243         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18244         -> generics.cs change as it doesn't work with some automake versions.
18245
18246 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18247
18248         * mini.c: handle systems that sue a different way to
18249         retrieve the stack address of the current thread.
18250
18251 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18252
18253         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18254         it specially in the makefile.
18255
18256         * generics.2.cs: Add tests for nullable reference types.
18257
18258 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18259
18260         * mini.c: always handle the case when mono_jit_init()
18261         is called in a thread different from the main thread,
18262         confusing libgc (bug #77309).
18263
18264 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18265
18266         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18267
18268 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18269
18270         * mini.c: change optimize_branches () to use a single loop
18271         and introduce a new optimization to simplify some range checks.
18272
18273 2006-02-03  Martin Baulig  <martin@ximian.com>
18274
18275         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18276         and merged with debugger_thread_manager_add_thread().
18277         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18278         inform the debugger about the main thread.
18279
18280 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * basic.cs: Add test for div.un/rem.un constant folding.
18283
18284 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18285
18286         * cpu-s390x.md: correct int_xor_imm length
18287
18288 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * generics.2.cs: New test for #77442.
18291
18292         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18293         #77442.
18294
18295 2006-02-02  Martin Baulig  <martin@ximian.com>
18296
18297         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18298         <mono/metadata/mono-debug-debugger.h>   
18299
18300         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18301
18302 2006-02-02  Martin Baulig  <martin@ximian.com>
18303
18304         * debug-debugger.h: New header file for debug-debugger.c.
18305
18306         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18307         function is a separate thread anymore; add support for attaching.
18308
18309 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * tramp-x86.c: Fix a warning.
18312
18313 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18316         on very large methods.
18317
18318         * aot.c (load_patch_info): Fix a warning.
18319
18320 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18321
18322         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18323         mini-ops.h: alu membase optimizations.
18324
18325 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18326
18327         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18328         to speedup StringBuilder.
18329
18330 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18331
18332         * dominators.c (mono_compute_natural_loops): Fix detection of
18333         loop body start blocks.
18334
18335         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18336
18337 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18338
18339         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18340         #75145.
18341
18342 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18343
18344         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18345
18346 2006-01-25  Martin Baulig  <martin@ximian.com>
18347
18348         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18349         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18350         started to cleanup this file a little bit.
18351
18352 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18353
18354         * mini.c: optimize a codepath frequently happening in generics code.
18355
18356 2006-01-23  Martin Baulig  <martin@ximian.com>
18357
18358         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18359
18360         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18361         functions directly.
18362
18363         * driver.c: debug-debugger.c is only available if
18364         `MONO_DEBUGGER_SUPPORTED' is defined.   
18365
18366 2006-01-23  Martin Baulig  <martin@ximian.com>
18367
18368         * debug-debugger.c: Only enable this on platforms where the Mono
18369         Debugger is working (x86 and x86_64).
18370
18371 2006-01-21  Martin Baulig  <martin@ximian.com>
18372
18373         The Mono Debugger is now using the normal `mono' instead of the
18374         `mono-debugger-mini-wrapper' when executing managed code.
18375
18376         * debug-debugger.c: New file; previously known as
18377         debugger/wrapper/wrapper.c.
18378
18379         * debug-mini.c (mono_init_debugger): Removed.
18380
18381         * driver.c (mono_main): Added new `--inside-mdb' command line
18382         argument which is used when running inside the debugger.
18383
18384 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18385
18386         * liveness.c (mono_analyze_liveness): Remove some unused data
18387         structures.
18388
18389 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18390
18391         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18392
18393 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18394
18395         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18396         depends on implementation details of monobitset.
18397
18398         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18399         Fixes #77271.
18400
18401 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18402
18403         * liveness.c: Update after monobitset changes.
18404
18405 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18406
18407         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18408
18409 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18410
18411         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18412
18413         * mini-s390x.c: Remove warning messages.
18414
18415 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18416
18417         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18418
18419 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18420
18421         * generics.2.cs: Add ldelem/stelem_any test.
18422
18423 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18424
18425         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18426
18427 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18428
18429         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18430         
18431 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18432
18433         * generics.2.cs: Reenable vtype tests.
18434
18435         * inssel-x86.brg: Remove an icorrect valuetype rule.
18436
18437 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18438
18439         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18440         initial support for OP_ABS.
18441
18442 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18443
18444         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18445
18446 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18447
18448         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18449         conversion and implement LADD/LSUB.
18450
18451         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18452         architectures.
18453
18454 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18455
18456         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18457
18458         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18459         architectures.
18460
18461 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18462
18463         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18464         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18465         (stack walk problem).
18466
18467 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18468
18469         * aot.c (mono_aot_load_method): Fix a warning.
18470
18471 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18472
18473         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18474
18475 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18476
18477         * iltests.il: Add test for #77148.
18478
18479         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18480         #77148.
18481
18482 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18483
18484         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18485
18486 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18487
18488         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18489         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18490
18491         * basic-long.cs: Add lconv-to-r4/r8 tests.
18492
18493 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18494
18495         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18496
18497         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18498         here as on other archs.
18499
18500 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18501
18502         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18503
18504 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18505
18506         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18507         
18508         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18509
18510         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18511         instrument_prolog; Add memory_barrier instruction.
18512
18513 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18514
18515         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18516
18517 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18518
18519         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18520
18521         * aliasing.c inssel.brg: Fix warnings.
18522
18523         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18524         could skip initialization of some parts of memory.
18525
18526         * mini.c mini-ia64.c: Fix warnings.
18527
18528         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18529
18530 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18533         a crash seen on sparc.
18534
18535         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18536         
18537         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18538
18539 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18540
18541         * mini-ops.h: Add s390_backchain instruction
18542
18543         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18544
18545         * cpu-s390.md: Add s390_backchain instruction
18546
18547         * mini-s390.c: Significant ABI changes
18548
18549         * mini-s390.h: Cater for zero length structures
18550
18551 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18552
18553         * mini-s390.c: ABI fixes
18554
18555         * inssel-s390.brg: Remove debug statements
18556
18557         * cpu-s390.md: Fix length of ATOMIC_xx operations
18558
18559 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18560
18561         * basic-float.cs: Add float<->long conversion tests.
18562
18563 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18564
18565         * mini-s390.c: Fix LOCALLOC processing.
18566
18567         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18568
18569 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18570
18571         * iltests.il: Add tests for some opcodes not covered by the other
18572         tests.
18573
18574 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18575
18576         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18577         register loading for Tail processing; Correct trace output.
18578
18579         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18580
18581         * cpu-s390.md: Correct size of jmp instruction. 
18582
18583 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18584
18585         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18586
18587 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18588
18589         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18590           Bring s390 up to current level.
18591
18592 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18593
18594         * generics.2.cs: Disable the newly added tests as they do not work yet.
18595         
18596         * generics.2.cs: Add valuetype tests.
18597
18598 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18599
18600         * basic-long.cs: Add i4->u8 test.
18601
18602         * objects.cs: Add tests for JIT intrinsic.
18603
18604         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18605         optimizations lost by a mistake.
18606
18607 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18608
18609         * basic-long.cs: Remove a test moved to objects.cs.
18610
18611         * arrays.cs: Add more array tests.
18612
18613 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18614
18615         * arrays.cs: Add new tests for multi-dimensional arrays.
18616
18617 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18618
18619         * Makefile.am (test_sources2): Add generics.2.cs.
18620         (EXTRA_DIST): Add test_sources2.
18621
18622 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18623
18624         Support for boxing and unboxing nullable types as well as the
18625         isinst operation on nullables, per the CLI ammendment.
18626
18627         * inssel.brg (CEE_ISINST): Special case for nullable
18628
18629         * mini.c (handle_unbox_nullable): new method
18630         (handle_box): Special case for nullable types
18631         (mono_method_to_ir): Call handle_unbox_nullable in correct
18632         places.
18633
18634         * generics.2.cs: New test suite
18635
18636         * Makefile.am: Support for regression tests with generics.
18637
18638 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18639
18640         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18641         allocated to registers. Fixes #76800.
18642
18643 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18644
18645         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18646
18647 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18648
18649         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18650         of platforms.
18651
18652 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18653
18654         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18655         objects.cs.
18656
18657         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18658         
18659         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18660 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18661
18662         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18663         single precision before storing to a single precision location.
18664
18665 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18666
18667         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18668
18669 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18670
18671         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18672         correct files.
18673
18674         * basic.cs: Remove test_0_byte_compares test which was moved to
18675         objects.cs a long time ago.
18676
18677 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18678
18679         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18680
18681 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18682
18683         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18684         handlers are called.
18685
18686         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18687         throwing code.
18688
18689          * mini-ia64.c: Add support for the throw->branch exception 
18690         optimization.   
18691
18692         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18693
18694 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18695
18696         * mini.c: Enabled "fastpath" deadce :-)
18697         
18698 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18699
18700         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18701         alias analysis pass to support it.
18702         * mini.h: Likewise.
18703         * ssa.c: Likewise.
18704         * liveness.c: Likewise (liveness computation can use aliasing
18705         information to be more accurate).
18706         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18707         moreover made so that "--compile-all" uses the given optimization
18708         flags and not the default ones.
18709         * aliasing.c: Alias analysis (new file).
18710         * aliasing.h: Likewise.
18711         * Makefile.am: added "aliasing.c" and "aliasing.h".
18712         
18713 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18714
18715         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18716         OP_L opcodes.
18717
18718 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18721         fp >= end_of_stack exit condition, as it is not needed, and it might
18722         become true for fp eliminated frames.
18723
18724 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18725
18726         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18727         coded offsets.
18728
18729 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18730
18731         * mini-arm.c: fixed alignment of doubles/longs to match
18732         the C ABI (bug #76635).
18733
18734 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18735
18736         * aot.c: fix compilation with --enable-minimal=aot.
18737
18738 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18739
18740         * mini-arm.c: fixed compatibility with the new
18741         floating point emulator package for compares.
18742
18743 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18744
18745         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18746
18747 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * mini-exceptions.c (print_stack_frame): Output to stderr.
18750         (mono_handle_native_sigsegv): Ditto.
18751
18752 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18755         OP_LCONV_TO_OVF_I implementation.
18756
18757         * mini-amd64.c: Add support for the throw->branch exception 
18758         optimization.
18759
18760         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18761         when the catch clause catches a more general exception, i.e. Object.
18762
18763 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18764
18765         * cpu-ia64.md: Remove unused opcodes.
18766
18767         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18768         specific defines for architectures defining USE_SIGACTION.
18769
18770         * mini-ia64.c: Fix some warnings.
18771
18772         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18773         version seemed to skip a frame.
18774
18775 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18778         only calls which are made to native code use this flag.
18779
18780 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18783         varargs methods as well.
18784         
18785         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18786         which have save_lmf set. Reorganize methods prologs a bit.
18787
18788         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18789         debugger to the proper place.
18790
18791 2005-10-29  Martin Baulig  <martin@ximian.com>
18792
18793         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18794         when running inside the debugger until the debugger has support
18795         for it.
18796
18797 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18798
18799         * mini.h: Fix a warning.
18800
18801 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18802
18803         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18804         we expose publicly, this returns the string.
18805
18806 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18809         with fp elimination.
18810
18811 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18812
18813         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18814         native stacktrace using the glibc 'backtrace' function if available.
18815
18816 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18817
18818         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18819
18820         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18821         handle SIGSEGVs received while in native code.
18822
18823         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18824         code, call mono_handle_native_sigsegv which will abort the runtime
18825         after printing some diagnostics, instead of converting it into a
18826         confusing NullReferenceException.
18827
18828 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18829
18830         * cpu-pentium.md: Remove unused opcodes.
18831
18832 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * mini-amd64.h (MonoLMF): Add rsp field.
18835
18836         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18837         the lmf too.
18838
18839 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18840
18841         * mini-codegen.c (get_register_spilling): Fix some warnings.
18842
18843 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18844
18845         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18846         elimination during exception handling. Enable fp elimination by
18847         default.
18848
18849         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18850         elimination.
18851
18852 2005-10-16  Martin Baulig  <martin@ximian.com>
18853
18854         * mini-exceptions.c
18855         (mono_debugger_run_finally): New public method for the debugger.
18856
18857 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18858
18859         * debug-mini.c (mono_debug_init_method): Fix warning.
18860
18861         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18862         the 'exname' parameter const to fix some warnings.
18863
18864 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18867         introduced by the previous patch.
18868
18869 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18870
18871         * basic-float.cs: Add test for precision of float arithmetic.
18872
18873         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18874         when loading/storing single values from/to memory.
18875
18876         * mini.c (mono_jit_compile_method_with_opt): Create the function
18877         pointers in the correct domain.
18878
18879 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18882         introduced by previous patch.
18883         
18884         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18885         when out_filter_idx is NULL.
18886
18887         * mini-exceptions.c: Don't run filter clauses twice during exception
18888         handling. Fixes #75755.
18889
18890 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18891
18892         * aot.c: Add support for ldflda wrappers.
18893
18894         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18895         #75902.
18896
18897 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18898
18899         * mini.c, mini.h: do not consider exception handlers blocks when
18900         setting up interface variables.
18901
18902 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18903
18904         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18905
18906 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18907
18908         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18909         causes a regression.
18910
18911         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18912
18913 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18914
18915         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18916         of the OP_P definitions.
18917
18918         * TODO: Add a proposal for dealing with the CEE/OP mess.
18919
18920         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18921         optimizations from the x86 port.
18922
18923         * cpu-amd64.md: Ditto.
18924
18925         * basic.cs basic-long.cs: Add tests.
18926
18927 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18930         Patrik Torstensson's implementation of my exception-handling
18931         optimization idea, when the exception object is not used
18932         (bug #62150).
18933
18934 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18935
18936         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18937         of the mul_imm optimizations from the old jit.
18938
18939 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18940
18941         * mini.c, liveness.c: patch by Patrik Torstensson and
18942         Zoltan Varga to improve performance in methods with
18943         exception clauses.
18944
18945 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18946
18947         * driver.c: Remove 'Globalization' entry from --version.
18948
18949 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18950
18951         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18952         there is a profiler interested in JIT events.
18953
18954         * aot.c: Load profile files produced by the AOT profiling module, and
18955         reorder methods based on the profiling info. Add a 'method_order' table
18956         to the AOT file to make mono_aot_find_jit_info work with the reordered
18957         methods.
18958
18959         * mini.h: Bump AOT file version info.
18960
18961 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18962
18963         * mini-arm.h: work around what looks like a gcc bug when optimizations
18964         are enabled.
18965
18966 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18967
18968         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18969         conditionals.  Use ...
18970         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18971
18972 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18975         to determine the amount of memory to copy when passing valuetypes.
18976
18977         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18978         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18979
18980 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18981
18982         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18983         information about aot.
18984
18985 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18986
18987         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18988         macros. This will allow a deadlock debugger to easily be plugged
18989         in.
18990
18991 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18992
18993         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18994
18995 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18996
18997         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18998         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18999         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19000         ($(arch_built)) [CROSS_COMPILING]: Error out.
19001
19002 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19003
19004         * aot.c: Add support for the no_special_static flag for classes.
19005
19006 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * Reapply reverted patches.
19009
19010         * *: Revert r50174 as well.
19011
19012         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19013
19014 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19017
19018 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19019
19020         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19021         part of the SIG_HANDLER_SIGNATURE.  
19022
19023 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19024
19025         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19026         statistics.
19027
19028         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19029         introduced by previous patch.
19030
19031 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19032
19033         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19034         saved registers too.
19035
19036         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19037         upon the information returned by get_call_info ().
19038         
19039         * mini-x86.c (add_float): Fix stack size calculation.
19040         (mono_arch_call_opcode): Rewrite this so it works based up the
19041         information returned by get_call_info ().
19042         (mono_arch_get_this_vret_args): Ditto.
19043
19044 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19047         in cinfo to determine the registers which need to be used.
19048
19049 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19050
19051         * driver.c (mono_main): Add --server and --desktop flags. 
19052
19053 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19054
19055         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19056         registers as global registers.
19057
19058         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19059         longer needed with the new register allocator.
19060
19061         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19062
19063         * cpu-ia64.md: Remove unused opcodes.
19064         
19065         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19066         
19067 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19068
19069         * cpu-amd64.md: Remove unused opcodes.
19070
19071         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19072         needed with the new register allocator.
19073
19074         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19075         reg-reg moves.
19076
19077 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19078
19079         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19080
19081 2005-09-16  Martin Baulig  <martin@ximian.com>
19082
19083         * exceptions-amd64.c
19084         (throw_exception): Don't call mono_debugger_throw_exception() if
19085         we're a rethrow - see the FIXME in the code.
19086
19087 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19088
19089         * mini.c (mono_init_exceptions): This only works on some architectures.
19090         
19091 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19092
19093         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19094         on ia64.
19095
19096         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19097
19098         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19099         now in mini-exceptions.c.
19100
19101 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19104         now in mini-exceptions.c.
19105
19106 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19107
19108         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19109         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19110
19111         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19112         code into mini-exceptions.c. Add some assertions to it.
19113
19114 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19115
19116         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19117         (<software@solmersa.com>). Fix as errors on windows.
19118
19119 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19122         method info into the LMF.
19123
19124 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19125         
19126         * mini-ia64.c: Add proper unwind info for method epilogs.
19127
19128         * exceptions-ia64.c: Add some code to help debugging.
19129         
19130         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19131
19132         * mini-exceptions.c: Fix warning.
19133
19134 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19135
19136         * mini.c: Really fix build.
19137
19138         * mini-x86.c mini-amd64.c: Fix build.
19139
19140 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19141
19142         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19143
19144         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19145         some Interlocked methods as intrinsics.
19146
19147         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19148         for Thread methods as well.
19149
19150         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19151
19152         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19153
19154         * mini-ia64.c mini-x86.c mini-amd64.c 
19155         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19156         OP_MEMORY_BARRIER.
19157         
19158         * mini.c (mono_init_exceptions): Fix build breakage.
19159
19160 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19161
19162         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19163         of instructions. Use the new ia64_unw_op macros for emitting unwind
19164         info.
19165
19166         * mini.c (mono_init_exceptions): Initialize exception handling
19167         related trampolines at startup.
19168
19169 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19170
19171         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19172
19173 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19174
19175         * mini.c: Handle type loading errors gracefully during compilation and
19176         throw the appropriate exception.
19177
19178 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19179
19180         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19181         for the mono binary.
19182
19183 2005-09-09  Martin Baulig  <martin@ximian.com>
19184
19185         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19186         the release.
19187
19188 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19189
19190         * mini-arm.h: use emulation for conv.r.un for the release.
19191
19192 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19193
19194         * mini-arm.c, objects.cs: more fixes and tests for them.
19195
19196 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19197
19198         * mini-arm.c: align structures to at least 4 bytes to be able
19199         to keep our current optimized memcpy.
19200
19201 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19202
19203         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19204
19205 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19206
19207         * mini.c: ignore SIGPIPE.
19208
19209 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19210
19211         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19212
19213         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19214
19215 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19216
19217         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19218
19219 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19220
19221         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19222         exception handling support.
19223         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19224         patch by Brian Koropoff <briank@marakicorp.com>).
19225
19226 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19227
19228         * mini.c: revert another 'optimization' which breaks when
19229         items on the eval stack need to be saved at a basic block end
19230         (bug #75940).
19231
19232 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19233
19234         * jit-icalls.c: for arrays, ensure we always provide
19235         lower bounds.
19236
19237 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19238
19239         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19240         
19241         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19242
19243 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19244
19245         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19246         arguments in their original register.
19247
19248 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19249
19250         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19251         memset/memcpy.
19252
19253         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19254         when ssapre is enabled.
19255
19256         * inssel-long.brg: Fix bug in previous patch.
19257
19258         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19259         multiplication by a constant.
19260
19261 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19262
19263         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19264         icc.
19265
19266         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19267         saving registers.
19268
19269 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19270
19271         * inssel-arm.brg: apply changes tested by Brian Koropoff
19272         <briank@marakicorp.com>.
19273
19274 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19275
19276         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19277         
19278 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19279
19280         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19281         to the same register if dreg is just a base register.
19282         (print_ins): Improve printing of membase opcodes.
19283
19284         * inssel-x86.brg: Add optimized ldind(reg) rules.
19285
19286         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19287
19288 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19289
19290         * mini.c: when running under valgrind, set the stack bottom for
19291         the GC at the actual approximate stack for the app (fixes running
19292         mono with valgrind).
19293
19294 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19295
19296         * mini.c: do no break at the first valuetype to init found
19297         (fixes bug #75791).
19298
19299 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19300
19301         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19302
19303 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19304
19305         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19306
19307 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19310
19311 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19314
19315         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19316         code.
19317
19318         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19319         code.
19320
19321         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19322         methods.
19323
19324 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19325
19326         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19327
19328 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19331         in the tail recursion optimization.
19332
19333         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19334         debug info into the assembly file.
19335
19336         * iltests.il: Add test for filter regions.
19337
19338         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19339         initial stack of filter regions. Fixes #75755.
19340
19341 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19342
19343         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19344         stack requirements.
19345
19346 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19349         the check for an already compiled method on non-ia64 platforms.
19350         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19351         proper domain.
19352
19353         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19354
19355         * inssel-x86.brg: Add some optimized call rules.
19356
19357 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19358
19359         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19360         method here.
19361
19362         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19363         mono_arch_patch_delegate_trampoline.
19364
19365         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19366
19367         * mini-trampolines.c: Fix build.
19368
19369         * mini-amd64.h: Add delegate trampolines.
19370
19371         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19372
19373         * inssel-amd64.brg: Add optimized call rules.
19374         
19375         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19376
19377         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19378
19379 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19382         change.
19383
19384         * mini-ia64.c: Remove LMF fixmes.
19385
19386         * mini-ia64.h: Remove most fields from LMF.
19387
19388         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19389
19390         * mini-trampolines.c: Add support for IA64 function descriptors.
19391
19392         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19393         for IA64 function descriptors.
19394
19395 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19396
19397         * tramp-arm.c: patch the vtable for virtual calls. Added
19398         support code to register/unregister the LMF.
19399         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19400         more LMF work.
19401
19402 2005-08-19  Dick Porter  <dick@ximian.com>
19403
19404         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19405         bit value if needed.
19406
19407 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * mini.c (mini_get_method): Move handling of wrapper data here.
19410
19411         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19412
19413         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19414         virtual.
19415
19416         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19417         bblock->code does not remain empty.
19418
19419 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * arrays.cs: Add regression test for #75832.
19422
19423         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19424         rules. Fixes #75832.
19425
19426         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19427         instruction scheduling.
19428
19429 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19430
19431         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19432
19433 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19434
19435         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19436
19437         * mini-codegen.c: Fix VC build.
19438
19439         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19440
19441 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19442
19443         * mini.h: fix signature for mono_register_opcode_emulation.
19444
19445 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19446
19447         * mini.c: Get rid of most of the helper_sig_... constants using
19448         mono_create_icall_signature ().
19449
19450 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19451
19452         * jit-icalls.c (helper_ldstr): New helper function.
19453
19454         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19455
19456         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19457         throw, load the string using a helper call instead of creating a string object.
19458
19459         * aot.c: Update after LDSTR changes.
19460
19461         * mini.h: Bump AOT file version.
19462         
19463         * aot.c: Save class size info into the AOT file. Print more statistics during
19464         compilation.
19465
19466         * mini.h: Bump AOT file version.
19467
19468         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19469         ordering of disasm cases. Fixes #74957.
19470
19471 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19472
19473         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19474         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19475         the generic code needed for the ARM port.
19476
19477 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19478
19479         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19480         inssel-arm.brg: more ARM features and fixes.
19481
19482 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19483
19484         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19485         ARM port work in progress.
19486
19487 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19488
19489         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19490
19491         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19492
19493         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19494
19495         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19496
19497         * *-ia64.*: Ongoing IA64 work.
19498         
19499         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19500
19501 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19502
19503         * TODO: Remove out-of-data todo stuff.
19504
19505         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19506         dead code.
19507
19508         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19509
19510         * mini.h: Bump corlib version.
19511
19512 2005-07-27  Martin Baulig  <martin@ximian.com>
19513
19514         * mini-codegen.c
19515         (create_copy_ins): Added `const unsigned char *ip' argument; set
19516         `copy->cil_code' from it.
19517
19518 2005-07-27  Martin Baulig  <martin@ximian.com>
19519
19520         * mini-exceptions.c (mono_handle_exception): Don't call
19521         mono_debugger_handle_exception() for filters.
19522
19523 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19524
19525         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19526         as well.
19527
19528 2005-07-26  Martin Baulig  <martin@ximian.com>
19529
19530         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19531
19532         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19533         helper_compile_generic_method() if the method is actually virtual
19534         and non-final.
19535
19536 2005-07-26  Martin Baulig  <martin@ximian.com>
19537
19538         * mini.c
19539         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19540         public; this is now accessed directly by the debugger.
19541         (mono_generic_trampoline_code): Removed.
19542
19543         * debug-mini.c
19544         (mono_debug_init_method): Also add interncalls and wrappers.
19545
19546 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19549
19550 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19553
19554 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19557
19558 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19559
19560         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19561         getting TLS offsets on AMD64 too.
19562
19563 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19564
19565         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19566
19567 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19568
19569         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19570         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19571
19572 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19575
19576         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19577         to mini.c.
19578
19579         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19580         mono_sparc_is_virtual_call ().
19581         
19582         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19583
19584         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19585         trampoline parameters.
19586
19587         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19588         
19589         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19590         to mono_arch_get_vcall_slot_addr.
19591
19592         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19593         trampoline code.
19594
19595         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19596
19597 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19598
19599         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19600
19601 2005-07-19  Martin Baulig  <martin@ximian.com>
19602
19603         * exceptions-amd64.c (throw_exception): Call
19604         mono_debugger_throw_exception() here like we're doing it on i386.
19605
19606 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * mini-ia64.c: Add optimized TLS access support.
19609
19610 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * mini-exceptions.c: Ongoing IA64 work.
19613
19614         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19615
19616         * mini.c: Use the default optimization set when embedding. Fixes
19617         #75194.
19618
19619 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19622         of trampolines to a separate file.
19623
19624         * mini-trampolines.c: New file.
19625
19626         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19627         separate file.
19628         
19629         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19630         amd64/ia64 code.
19631
19632         * mini-codegen.c: Fix cygwin build.
19633
19634 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini.c: Add some minor changes needed by the IA64 port.
19637
19638         * *-ia64.*: Ongoing IA64 work.
19639
19640 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19643         trampolines into arch-independent and arch-dependent parts.
19644
19645         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19646
19647 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19648
19649         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19650
19651         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19652         the xp-regalloc-branch for amd64.
19653
19654         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19655         xp-regalloc-branch for x86.
19656
19657 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19658
19659         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19660
19661 2005-07-06  Martin Baulig  <martin@ximian.com>
19662
19663         * mini.c
19664         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19665         (mono_jit_runtime_invoke): Likewise.
19666
19667 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19670         on x86 too.
19671         
19672         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19673         without loading their metadata. Reorganize the file format so exception handling+
19674         debug info is kept separate from normal method info. Create MonoJitInfo 
19675         structures for methods lazily.
19676
19677         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19678         loading metadata.
19679         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19680
19681         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19682
19683         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19684         in AOT code.
19685
19686         * mini.h: Bump AOT file version.
19687
19688 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19691
19692 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19693
19694         * Makefile.am (check-local): Call semdel-wrapper.
19695
19696 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini-x86.c: Revert the last change as it seems to break the build..
19699
19700 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19701
19702         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19703         
19704         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19705
19706 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19707
19708         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19709         outside of the macro, so strange stuff doesn't happen with gcc4
19710         (NEW_AOTCONST_TOKEN): Likewise.
19711
19712 2005-06-28  Martin Baulig  <martin@ximian.com>
19713
19714         * mini.c (mini_class_is_system_array): New static method; use this
19715         instead of `klass->parent == mono_defaults.array_class' everywhere
19716         since this also works for the new generic array class.
19717
19718 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19719
19720         * inssel.brg: Remove warnings.
19721
19722 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19723
19724         * mini-ia64.c: Ongoing IA64 work.
19725
19726         * basic-float.cs: Add float->i1 conversion test.
19727
19728         * iltests.il: Add conv.u4 test.
19729
19730 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19731
19732         * inssel-long.brg: Fix bug caused by last change.
19733
19734 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19735
19736         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19737         BSDs.  Allows the x86 JIT to work on OSX86
19738
19739 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19742         u4->i8 conversion.
19743
19744         * mini-ia64.c: Ongoing IA64 work.
19745
19746 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * mini-ia64.c: Ongoing IA64 work.
19749
19750         * driver.c: Clean up jit_code_hash as well when using --regression.
19751
19752         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19753
19754         * basic-long.cs: Add tests for long->u4 conversion.
19755
19756 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19757
19758         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19759         that we do not depend on undefined C behavior: the order stuff
19760         gets evaluated within an expression. Fixes mono when compiled on
19761         GCC 4.
19762
19763 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * *-ia64.*: Ongoing IA64 work.
19766
19767         * aot.c: Lower memory usage while loading AOT methods.
19768
19769         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19770
19771         * mini.h: Bump AOT file format version.
19772
19773 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19776
19777 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19778
19779         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19780         not on callee assembly). Fixed some comments.
19781
19782 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19785         it gets proper disassembly.
19786         (emit_method_info): Remove some dead code.
19787
19788         * mini.c (mini_method_compile): Allways allocate the GOT var in
19789         mono_method_to_ir for emulating opcodes.
19790
19791 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19792
19793         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19794         before freeing the code memory. Fixes #74990.
19795
19796         * objects.cs: Add regression test for #74992.
19797
19798         * liveness.c: Extend live ranges of arguments to the beginning of the
19799         method. Fixes #74992.
19800
19801         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19802         so it points into the faulting instruction.
19803
19804 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19805
19806         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19807
19808         * *-ia64.*: Ongoing IA64 work.
19809
19810         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19811
19812 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19815
19816         * *-ia64.*: Ongoing IA64 work.
19817
19818 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * basic-long.cs: Add tests for add/sub.ovf.
19821
19822         * basic.cs: Add tests for sub.ovf.
19823
19824         * *-ia64.*: Ongoing IA64 work.
19825
19826 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * *-ia64.*: Ongoing IA64 work.
19829
19830         * basic.cs: Add conv.ovf.i4.un test.
19831
19832 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19833
19834         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19835         
19836 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19837
19838         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19839
19840 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * *-ia64.*: Ongoing IA64 work.
19843
19844 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19845
19846         * trace.[ch]:
19847         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19848
19849 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19852
19853 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19856
19857         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19858         of a call is callable by a near call.
19859
19860 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19861
19862         * mini-ia64.c: Ongoing IA64 work.
19863
19864 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * genmdesc.c: Make the generated array non-static.
19867
19868         * inssel-long.brg: Fix LSHR_IMM rule.
19869
19870         * *-ia64.*: Ongoing IA64 work.
19871
19872         * *-ia64.*: Ongoing IA64 work.
19873
19874 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19875
19876         * *-ia64.*: Ongoing IA64 work.
19877
19878         * *-ia64.*: Ongoing IA64 work.
19879         
19880         * mini-ia64.c: Ongoing IA64 work.
19881
19882         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19883
19884 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19887         
19888         * objects.cs basic-long.cs: Move some tests to objects.cs.
19889
19890 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * *-ia64.*: Ongoing IA64 work.
19893
19894         * iltests.il: Add a new test.
19895
19896         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19897         newobj. Fixes #75042.
19898
19899 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * *-ia64.*: Ongoing IA64 work.
19902         
19903         * *-ia64.*: Ongoing IA64 work.
19904         
19905         * *-ia64.*: Ongoing IA64 work.
19906
19907         * basic.cs objects.cs: Move tests accessing static variables as well.
19908
19909         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19910
19911 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19914
19915         * driver.c: Always print failed tests.
19916
19917         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19918         frame pointer.
19919
19920         * *ia64*: Ongoing IA64 work.
19921
19922 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * basic.cs: Add tests for add.ovf. Fix warnings.
19925
19926 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19927
19928         * driver.c (mono_main): Avoid crash if no argument is passed to
19929         --break;  Do not use g_error, but f_printf.   And fix all other
19930         ocurrences of the same crash.
19931
19932 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19935         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19936         Fixes #74742.
19937
19938 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19939
19940         * *-ia64.*: Add beginnings of IA64 backend.
19941
19942         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19943
19944 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19945
19946         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19947         Fixes #74925.
19948
19949         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19950
19951         * mini-amd64.c: Fix a warning.
19952
19953 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19956         in float_neg. Fixes #74897.
19957
19958         * mini-amd64.c (emit_call): Fix another near call bug.
19959
19960 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19961
19962         * declsec.c: Keep the appdomain information in the structure. Added a 
19963         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19964         value gets overwritten).
19965         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19966         an MonoAppDomain member to MonoSecurityFrame.
19967         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19968         used in the stack walk. Now use a MonoArray which grow (double) when
19969         it gets full.
19970
19971 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19972
19973         * mini.c: Re-enabled runtime cleanup, since running threads should
19974         now properly stop when exiting.
19975
19976 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19977
19978         * mini-codegen.c: New file contaning the arch-independent local
19979         register allocator. Not used by any architectures yet.
19980
19981         * mini.h linear-scan.c: Merge some changes from the 
19982         mini-xp-local-regalloc branch.
19983
19984 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19985
19986         * mini-amd64.c (emit_call): Fix calls to native functions when the
19987         runtime is compiled as a shared library. Fixes #74756.
19988
19989         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19990         on a literal field. Fixes #74751.
19991
19992 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19993
19994         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19995
19996 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * objects.cs: Add missing null casting test.
19999
20000 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20003         in wrapper methods. Also rename 'address' variable to 'offset'.
20004
20005 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20008         warnings.
20009         
20010         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20011
20012         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20013         work on windows.
20014
20015 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20016
20017         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20018
20019 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20022         just the last bytes.
20023
20024 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20025
20026         * aot.c (mono_compile_assembly): Fix warning.
20027
20028         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20029         by the _MSC_VER stuff.
20030
20031 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * inssel-long.brg: Fix #74588.
20034
20035         * cpu-amd64.md: Fix #74591.
20036
20037         * iltests.il: Add new regression tests.
20038
20039 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20042         valuetype.
20043
20044 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20047
20048         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20049         from Bill Middleton <flashdict@gmail.com>.
20050
20051 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * arrays.cs: Add new regression test. Fix warnings.
20054
20055 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20058         and leakage in CKFINITE.
20059
20060         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20061         this to a null op since it is called on amd64 too.
20062
20063         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20064
20065         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20066         body since this is not used on amd64.
20067         
20068         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20069
20070         * mini-amd64.c: Remove obsolete fixmes.
20071
20072         * mini.c (print_method_from_ip): Fix debugging support.
20073
20074 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20075
20076         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20077         so that expressions that don't give much gain are not reduced.
20078         * ssapre.h: Likewise.
20079
20080 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20083
20084         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20085
20086         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20087
20088 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20089
20090         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20091
20092         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20093
20094 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20097         stack touching.
20098
20099         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20100
20101         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20102
20103         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20104
20105         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20106         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20107
20108         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20109
20110         * mini-x86.c: Fix up stack overflow handling.   
20111
20112         * exceptions.cs: Add new regression test.
20113
20114 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20117         mono_jit_thread_attach.
20118
20119         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20120
20121 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20124         avoid calling constructors using callvirt.
20125
20126         * inssel.brg: Fix #74073.
20127
20128 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20129
20130         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20131         compilation with non-GCC compilers.
20132         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20133         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20134
20135 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20136
20137         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20138         klass->interface_offsets (will likely fix bug#74073).
20139
20140 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20141
20142         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20143
20144 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20147         to amd64_div_reg_size ().
20148         
20149         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20150
20151 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20154
20155 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20156
20157         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20158
20159 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20162         
20163         * mini.c (mono_precompile_assembly): Load and precompile referenced
20164         assemblies as well. Fixes #74015.
20165
20166 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20167
20168         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20169
20170 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20171
20172         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20173         a lot of checks and (anyway) permissions cannot work until corlib is 
20174         loaded.
20175
20176 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20177
20178         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20179
20180 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20181
20182         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20183         calls (fixes bug#72824).
20184
20185 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20186
20187         * mini.c: fix tail recursion elimination (see test in bug#73936).
20188
20189 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20192         some fp functions in sse2 mode.
20193
20194 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20195
20196         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20197
20198 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20199
20200         * mini.h mini.c: Add mono_get_jit_tls_key ().
20201
20202         * mini-x86.c: Enable fast TLS support on windows.
20203
20204 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20205
20206         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20207         * mini.c: Check for p/invoke method when generating code. If a
20208         p/invoke method, or it's class, isn't decorated with [Suppress
20209         UnmanagedCodeSecurity] then generate code to call System.Security.
20210         UnmanagedDemand (only if the security manager is active).
20211
20212 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20213
20214         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20215         last change as it seems to cause strange crashes.
20216         
20217 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20218
20219         * *.c: handle unsafe function pointers where needed.
20220
20221 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * mini.c (mono_jit_free_method): Remove the fixme too.
20224
20225 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20226
20227         * mini.c: As discussed, make the code actually free the delegate
20228         thunk now, to enable the debugging of delegate problems, use
20229         MONO_DEBUG=1 when running Mono. 
20230
20231         This takes also care of parts of the leaks as seen by Joe.
20232
20233 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20234
20235         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20236         thread_tls_offset calculation.
20237
20238 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20239
20240         * declsec.c: Reworked linkdemand checks for icall. The previous code
20241         was using the declaration code (untrusted) and didn't work as expected
20242         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20243         specific case.
20244
20245 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * iltests.il: Add new localloc test.
20248
20249         * mini-amd64.c: Handle large stack allocations the same way as on
20250         windows if stack overflow handling is working.
20251         
20252         * mini-amd64.c: Allocate the signal stack using mmap.
20253
20254         * mini.c (sigsegv_signal_handler): Fix reading of context.
20255
20256         * mini-exceptions.c: Fix up stack overflow handling.
20257
20258         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20259
20260         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20261
20262         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20263
20264         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20265
20266         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20267         tramp_init functions as they are no longer needed.
20268
20269 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20272         
20273         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20274
20275         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20276         
20277         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20278         support that now.
20279
20280         * mini-ops.h: Add OP_LMUL_IMM.
20281
20282         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20283         long mul/div opcodes as intrinsic.
20284
20285         * mini-amd64.c (emit_call): Handle the case when the callee might be
20286         an AOT method.
20287
20288 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20291         extra safe.
20292         
20293         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20294
20295         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20296
20297 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20298
20299         * mini.c (mono_codegen): Don't leak here, to help people running
20300         monogrind.
20301
20302 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20305         conversions in sse2 mode.
20306
20307         * basic-float.cs: Add regression test.
20308         
20309         * mini-amd64.c: Reenable sse2.
20310
20311 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20312
20313         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20314
20315 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20316
20317         * driver.c: Copyright text should include 2005.
20318         
20319 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20320
20321         * cpu-amd64.md (load_membase): Fix more max lengths.
20322
20323 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20324
20325         * cpu-amd64.md (load_membase): Fix max length.
20326
20327         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20328
20329         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20330
20331         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20332         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20333
20334         * basic-float.cs: Add rounding regression test.
20335
20336         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20337
20338 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20339
20340         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20341         structures in registers for pinvoke wrappers.
20342
20343 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20346
20347 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20348
20349         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20350         wrapper to mono_jit_thread_attach.
20351
20352         * mini.c (mini_jit_thread_attach): New jit icall.
20353
20354         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20355         native->managed wrappers.
20356
20357         * exceptions.cs: Add new regression test.
20358
20359         * mini.c (optimize_branches): Check regions in the cbranch to throw
20360         block case as well. Fixes #73242.
20361
20362 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20363
20364         * mini.c: thread safety fixes.
20365
20366 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20369         patching stuff, since delegates use jump trampolines so there is
20370         no caller.
20371
20372         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20373         jump trampolines.
20374         
20375         * tramp-amd64.c: Fix build.
20376
20377         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20378         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20379
20380         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20381         Rename this to mono_arch....
20382         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20383
20384         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20385
20386         * mini-amd64.c (emit_call): If both the caller and the callee is
20387         guaranteed to have 32 bit addresses, emit a normal call.
20388
20389         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20390
20391         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20392         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20393         method_ptr inside delegates.
20394
20395 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20396
20397         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20398         invalidated. Fixes #73001.
20399
20400         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20401
20402         * mini-x86.c: Only use stdcall for pinvokes on windows.
20403
20404 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20405
20406         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20407         * mini-x86.c: remove unreliable __thread var offset detection,
20408         use the correct accessors and enable by default.
20409
20410 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20411
20412         * mini.c (mono_jit_free_method): Fix memory leak.
20413
20414 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20417
20418 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20419
20420         * cpu-amd64.md: Fix lengths of atomic opcodes.
20421
20422 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20423
20424         * driver.c: try to not imply using ICU is any good.
20425
20426 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20427
20428         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20429         functions as inline ops.
20430
20431         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20432         some Interlocked functions as inline ops.
20433
20434         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20435
20436         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20437
20438         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20439
20440         * mini.c: Add support for OP_NOT_TAKEN.
20441
20442         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20443         structures in registers for pinvoke wrappers.
20444
20445         * mini-amd64.c: Fix warnings.
20446
20447 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20450
20451         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20452
20453         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20454         address instead of loading the address from it.
20455
20456         * mini-x86.c: Add support for returning small structs in registers
20457         on Win32. Fixes part of #70864.
20458         
20459 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * trace.c (get_token): Improve error checking.
20462
20463 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20466
20467 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20468  
20469         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20470         it can be reused for MonoClass.
20471         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20472         _LINKDEMAND.
20473
20474 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20475
20476         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20477         instead of a MonoReflectionMethod. The method information wasn't used
20478         when displaying SecurityException details (but will be now).
20479
20480 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20481
20482         * Makefile.am : windows build fix.
20483
20484 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * iltests.il: Add new regression test.
20487
20488         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20489         #72522.
20490
20491 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20492  
20493         * mini.c: Moved linkdemand check into helper function check_linkdemand
20494         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20495         LDFTN, LDVIRTFTN).
20496
20497 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20498
20499         * declsec.c: Added statistics counter for different kinds of 
20500         LinkDemands.
20501         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20502         (and commented) declaration.
20503         * mini.c: Added statistics counter for security Demand code 
20504         generation. Added display of security statistics.
20505
20506 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20507
20508         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20509         Fix compilation errors under gcc-2.95.
20510
20511 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20512
20513         * mini.c, driver.c: Use the new jit trampoline hashtable
20514
20515 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20516
20517         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20518
20519 2005-02-11  Martin Baulig  <martin@ximian.com>
20520
20521         * debug-mini.c (mono_debug_close_method): Free the line number array.
20522
20523 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20524
20525         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20526         icalls.
20527
20528         * mini.h: Bump AOT file format version. 
20529
20530 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20531
20532         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20533         APTC and P/Invoke.
20534         * declsec.h: Added macros to get/set lazyly initialized security 
20535         informations about assemblies. Added new enum for different type of
20536         possible LinkDemand violation. Added function to check LinkDemands.
20537         * mini.h: Added a field to MonoCompile to hold any security violation
20538         detected when JITting a method (so it can be thrown later).
20539         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20540         and CEE_CALLVIRT. Added code to throw exception at the end of
20541         mini_method_compile (note: the exception is unhandled right now).
20542
20543 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20544
20545         * mini.c, jit-icalls.c: use the managed implementation of
20546         memset for initobj and memset, to avoid managed <-> unmanaged
20547         transitions.
20548
20549 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20552         optimization if it would need a GOT var.
20553
20554         * basic.cs: Add tests for constant propagation and switch statements.
20555
20556         * ssa.c: Fix out-of-range constant propagation and switch statements.
20557
20558 2005-02-09    <vargaz@freemail.hu>
20559
20560         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20561
20562 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20565
20566 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20567
20568         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20569
20570 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20571
20572         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20573         arithmetic operations.
20574
20575 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20576
20577         * mini-ppc.c: add a workaround for broken user code that
20578         DllImports vararg functions with non-vararg signatures.
20579
20580 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20581
20582         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20583         meaningfull error message for assemblies written in Managed C++.
20584
20585         * tramp-amd64.c mini-amd64.h: Add support for 
20586         create_trampoline_from_token ().
20587
20588         * aot.c mini-x86.c abcremoval.c: Applied patch from
20589         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20590
20591 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20592
20593         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20594         which takes a MonoImage/token as parameter instead of a MonoMethod.
20595
20596         * aot.c: Use the new trampoline for initializing vtables.
20597
20598         * aot.c: Add support for ldfld/stfld_remote wrappers.
20599
20600         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20601         rules for compare <MEM>, IMM.
20602
20603         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20604
20605         * aot.c: Handle inherited finalizers correctly.
20606
20607 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20608
20609         * inssel.brg (stmt): Add a missing _setup_... ().
20610
20611         * aot.c: Save some parts of the class state to the AOT file and use it
20612         to recompute that state when a class is initialized.
20613
20614         * mini.c: Install AOT hooks into the runtime.
20615
20616         * mini.h: Bump AOT file format version.
20617         
20618         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20619         Fixes #72148.
20620
20621         * iltests.il: Add new test.
20622
20623 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20624
20625         * mini.c: fix typo.
20626
20627 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20628
20629         * mini.c: setup the statistical profiler in the thread attach
20630         callback to cope with the new single thread code.
20631
20632 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20633
20634         * mini-ppc.c: ensure we have enough room for the profiler
20635         calls (fixed bug#72084).
20636
20637 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20638
20639         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20640         it.
20641
20642 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20643
20644         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20645
20646 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20647
20648         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20649         to succesfully execute parrotbench).
20650         * ssapre.h: Likewise.
20651
20652 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20653
20654         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20655         variable for stores to method arguments (fixes a SSAPRE issue).
20656
20657 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20658
20659         * mini.c: handle value types in dup, fixes gen-112.cs.
20660
20661 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20662
20663         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20664         sequence for calls in dynamic methods to avoid thunks.
20665
20666 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20667
20668         * mini.c: correctly remove dynamic methods from the hashtable.
20669
20670 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20671
20672         * driver.c: Disabled SSAPRE until fix the bug that appears
20673         in IronPython's parrotbench.
20674
20675 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20676
20677         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20678
20679         * mini.c (mono_method_to_ir): Revert the previous change.
20680         
20681         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20682         when AOT compiling.
20683
20684         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20685         mono_jit_info_table_find () etc. when running under valgrind.
20686
20687         * inssel.brg: Fix warnings.
20688
20689         * mini-exceptions.c: Fix warnings.
20690
20691 2005-01-31  Martin Baulig  <martin@ximian.com>
20692
20693         * driver.c (compile_all_methods_thread_main): Don't try to compile
20694         generic methods or anything which has type parameters.
20695
20696 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20697
20698         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20699
20700         * TestDriver.cs: Add --verbose flags.
20701
20702         * graph.c ssa.c: Fix 64 bit warnings.
20703         
20704         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20705         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20706         Fix 64 bit warnings.
20707
20708         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20709         variable not spotted by gcc.
20710         
20711         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20712         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20713         X86_COMPARE_MEMBASE opcodes.
20714
20715         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20716
20717 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20718
20719         * *: MonoMethod->signature might be NULL now. You *MUST* use
20720         mono_method_signature.
20721
20722 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20723
20724         * driver.c (compile_all_methods_thread_main): Compile the methods
20725         without invoking cctors.
20726
20727 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20728
20729         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20730         * basic-calls.cs: test for the above.
20731
20732 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20733
20734         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20735         MonoJitInfo changes.
20736
20737 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20740         eagerly if it contains dynamic methods.
20741         
20742         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20743
20744         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20745         trace, it is now computed by an icall from trace_ips.
20746         
20747         * mini-exceptions.c: Fix a warning.
20748
20749 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20750
20751         * mini-exceptions.c: don't bother getting stack trace info if
20752         it's not going to be used.
20753
20754 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20755
20756         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20757         ssapre-mini-ops.h.
20758
20759 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20760
20761         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20762
20763         * aot.c: Avoid calling mono_method_get_header () if not needed.
20764
20765         * mini.h: Bump AOT file format version.
20766         
20767         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20768
20769         * mini.c (mono_print_tree): Print more info for calls.
20770
20771 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20772
20773         * declsec.h: Remove warning by adding missing include for marshal.h
20774
20775 2005-01-26  Martin Baulig  <martin@ximian.com>
20776
20777         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20778         `ip' twice.
20779
20780 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20783         flags.
20784
20785         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20786
20787         * aot.c (mono_compile_assembly): Fix a warning.
20788
20789 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20790
20791         * declsec.c: Look for security attributes on the original MonoMethod 
20792         (and not the wrapped one). This fix permissions on icalls.
20793
20794 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20795
20796         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20797
20798         * mini.c (mono_allocate_stack_slots): Add a fixme.
20799
20800         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20801
20802 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20803
20804         * inssel.brg: optimize casts of sealed types (more
20805         optimizations waiting for fixes in remoting).
20806
20807 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20808
20809         * inssel.brg (stmt): Add another dummy rule.
20810
20811         * driver.c: Fix warnings.
20812
20813         * driver.c (mono_main): If running under valgrind, instruct glib to use
20814         the system allocation functions so valgrind can track the memory
20815         allocated by the g_... functions.
20816
20817         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20818
20819         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20820
20821         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20822
20823         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20824         variables in try regions.
20825
20826         * mini.c (mini_method_compile): Don't disable optimizations on large
20827         methods when AOT compiling.
20828
20829         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20830         allocate stack slots. Not yet used.
20831
20832 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20833
20834         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20835
20836 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20837
20838         * mini-ppc.c: make the branch info relative as the code
20839         buffer can be reallocated.
20840
20841 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20842
20843         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20844         * driver.c: Removed the AOT/security restriction. Now initialize the
20845         security manager (in metadata) if --security is used.
20846         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20847         rather than the pointer to declarative security, when AOT is used.
20848
20849 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20850
20851         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20852         basic blocks, reduced intrinsic exception throwing code size.
20853
20854 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20855
20856         * driver.c (mini_usage): Reorder the usage screen.
20857
20858 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20859
20860         * mini.c (mono_resolve_patch_target): Fix warning.
20861
20862 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20863
20864         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20865         previous patch.
20866
20867         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20868
20869         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20870         breaks the amd64 build.
20871
20872         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20873         register allocation. Fixes #71454.
20874
20875         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20876
20877         * arrays.cs: Add new regression test.   
20878
20879 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20880
20881         * ssapre.c: Turned usage of snprintf to GString.
20882         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20883         (I left it on by mistake in my previous commit).
20884
20885 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20886
20887         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20888         on cond branch optimization (fixes bug# 71515).
20889
20890 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20891
20892         * abcremoval.c: Fixed bug 71062.
20893         * abcremoval.h: Likewise.
20894
20895 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20896
20897         * mini.c: Added a new functionality to optimize_branches, the removal
20898         of useless basic blocks, and fixed some problem in the removal of
20899         critical edges; some utility functions added for both purposes.
20900         * ssapre.c: Added complex expression support, and fixed bug 70637.
20901         * ssapre.h: Likewise.
20902         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20903         enabled in SSAPRE.
20904         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20905         * driver.c: Re-enabled SSAPRE.
20906
20907 2005-01-19  Martin Baulig  <martin@ximian.com>
20908
20909         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20910         the result of mono_get_method_constrained().
20911
20912 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20913
20914         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20915         manager.
20916
20917 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20918
20919         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20920         be detected.  Fixes #59296.
20921
20922 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20925         which can happen. Fixes #71361.
20926
20927 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20930         manager.
20931
20932 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20933
20934         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20935         appdomain-unload.exe to fail.
20936         
20937         * mini.c: Fix some memory leaks.
20938
20939 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20940
20941         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20942         Fixed bug and sped up some codepaths.
20943
20944 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20945
20946         * mini.c: Fix some memory leaks.
20947
20948         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20949         conversion.
20950
20951         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20952
20953         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20954         #71320.
20955
20956         * iltests.il: Add regression test for #71320.
20957
20958 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * mini.c (mono_codegen): Fix installation of profiler hooks.
20961
20962         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20963
20964 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20965
20966         * mini.h, mini.c, cfold.c: optimize access to enum
20967         readonly fields, too. Eval conditional branches if possible
20968         to perform unreachable code removal in more cases.
20969
20970 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20971
20972         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20973
20974         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20975         code manager.
20976
20977         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20978         WinXP DEP. Fixes #71244.
20979
20980 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20983
20984 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20987
20988 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20989
20990         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20991         changes.
20992
20993         * mini.h: Bump AOT version.
20994
20995         * mini.h (MonoCompile): Change exvar to a hash table.
20996
20997         * mini.c: Allocate a separate exvar for each handler block.
20998
20999         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21000
21001         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21002         ex var with the pending exception and only throw if the two are equal.
21003         Fixes #68552.
21004         
21005         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21006
21007         * mini-x86.c: Fix warnings.
21008
21009         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21010         used by all the ports now.
21011
21012         * aot.c: Add write-symbols and save-temps options.
21013
21014 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21015
21016         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21017
21018 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21019
21020         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21021         operations.
21022
21023         * tramp-s390.c: Check vtable slot belongs to the domain.
21024
21025         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21026         as per other platforms.
21027
21028         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21029
21030 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21031
21032         * driver.c: we don't run the Main() code in a subthread anymore.
21033
21034 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21035
21036         * mini.c: added experimental rtc support in the statistical
21037         profiler: if the user has the permission, more accurate statistics
21038         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21039         The MONO_RTC value must be restricted to what the linux rtc allows:
21040         power of two from 64 to 8192 Hz.
21041
21042 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21045
21046 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21047
21048         * mini-ppc.c: better icache flush for smp.
21049
21050 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21051
21052         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21053
21054         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21055         amd64 port, not yet used.
21056
21057 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21058
21059         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21060         a struct type.
21061
21062 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21063
21064         * driver.c: Added --security option to activate the security manager.
21065         Right now this will allow code generation for declarative demands and
21066         is disabled when AOT is specified.
21067         * mini.c: Add code generation for declarative security demands.
21068         * mini.h: Add mono_use_security_manager as an extern gboolean.
21069
21070 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21071
21072         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21073         emitting more dense assembly code.
21074
21075         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21076         exception throwing stuff.
21077
21078 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21079
21080         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21081         dead code.
21082
21083         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21084         left in by mistake.
21085
21086         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21087         fixed.
21088
21089         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21090
21091         * tramp-*.c: Only patch vtable slots if the object is in the current
21092         domain. Fixes appdomain-unload.exe.
21093
21094         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21095         
21096         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21097         x86 branch.
21098
21099 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21100
21101         * mini.c (reverse_branch_op): New helper function.
21102
21103         * mini.c (optimize_branches): Run the new optimization only on 
21104         platforms which support it. Also reverse all kinds of branches.
21105
21106         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21107
21108         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21109         a throw statement.
21110
21111         * mini.c (optimize_branches): Reverse not-equals branches if the false
21112         bblock is a throw. This happens a lot of time with argument checking in
21113         corlib.
21114
21115         * mini.c (mono_codegen): Add support for placing basic blocks after
21116         the function epilogue.
21117
21118         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21119         function epilogue.
21120         
21121 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21122
21123         * mini.c (setup_stat_profiler): Only set this up if the platform
21124         supports ITIMER_PROF.
21125
21126 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21129         previous patch.
21130
21131         * inssel.brg: Fix a warning.
21132
21133 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21134
21135         * mini.c: added support for statistical profiler 
21136         (run with: --profile=default:stat).
21137
21138 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21139
21140         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21141
21142         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21143
21144         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21145         related to global registers from the amd64 port.
21146
21147 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21150
21151         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21152         with global registers.
21153         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21154
21155         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21156
21157 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21158
21159         * debug-mini.c (encode_value): Fix off-by-one.
21160
21161         * aot.c (encode_value): Likewise.
21162
21163         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21164
21165 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21166
21167         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21168         AOT.
21169
21170         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21171         
21172         * aot.c (emit_method_info): Increase size of temp buffer.
21173
21174         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21175         the AOT case.
21176
21177 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21178
21179         * aot.c (emit_method_info): Fix build.
21180         
21181         * aot.c: Further rework of the AOT file format to reduce the size of
21182         the method info data.
21183
21184         * mini.h: Bump AOT file format version.
21185
21186 2004-12-27  Martin Baulig  <martin@ximian.com>
21187
21188         * mini.c (mini_get_method): New static method; call
21189         mono_get_method_full() and mono_get_inflated_method().
21190         (mono_method_to_ir): Use mini_get_method() instead of
21191         mono_get_method_full(). 
21192
21193 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21194
21195         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21196
21197 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21200
21201         * inssel-amd64.brg: Add some optimization rules.
21202
21203 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21204
21205         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21206         standard not GC'd stuff is fine.
21207
21208 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21209
21210         * aot.c: Rework the AOT file format to get rid of most of the global
21211         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21212
21213         * mini.h: Bump AOT file format version.
21214         
21215 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21216
21217         * mini.h: Bump AOT file format version.
21218
21219         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21220         address is inside a GOT.
21221
21222         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21223
21224         * cpu-pentium.md: Increase the maximum size of some instructions which
21225         might involve a got access.
21226         
21227         * mini.c (get_method_from_ip): Another debug helper function.
21228
21229         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21230         when got var accesses are created during the decompose phase.
21231
21232         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21233
21234         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21235         argument mini_compile_method and to MonoCompile, and use this to
21236         determine whenever a given method is compiled for AOT. This allows the
21237         other methods compiled during AOT compilation to be free of AOT stuff,
21238         so the backends does not need to add special support for them by
21239         creating a fake GOT etc.
21240
21241         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21242         longer needed.
21243
21244 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21245
21246         * mini.c (mono_method_to_ir): It turns out that some of the
21247         x-appdomain wrappers are lax with types, so just ignore this for
21248         all wrappers.
21249
21250         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21251         at the vtable->klass. If it is non-shared code we can just use the
21252         vtable.
21253
21254 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21255
21256         * mini-ppc.c: access MonoDomain from tls, too.
21257
21258 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21259
21260         * declsec.c: Removed unused variable (and related warning ;-)
21261
21262 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21263
21264         * iltests.il: New test for LDELEMA on an array of ref types.
21265
21266         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21267         all ldelema's on reftypes.
21268         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21269         it was the wrong place to put it.
21270
21271         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21272         register to pop to make this cleaner, at the request of Paolo.
21273
21274 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21275
21276         * mini-ops.h (OP_GETHASHCODE): New op.
21277
21278         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21279
21280         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21281         operation.
21282
21283         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21284         by 25%.
21285         
21286         * mini-x86.c (mono_arch_output_basic_block): Rather than
21287
21288         add ebp, 4
21289
21290         Emit
21291
21292         pop edx
21293
21294         The first is 3 bytes while the second is 1. This saves 36 kb on
21295         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21296         see a small boost because of icache locality.
21297
21298         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21299
21300 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21301
21302         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21303         started code sharing with the generic code.
21304
21305 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21306
21307         * mini-ppc.c, cpu-g4.md: added code for direct access to
21308         tls data slots.
21309
21310 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21311
21312         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21313          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21314         to OP_TLS_GET.
21315
21316 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21317
21318         * declsec.c|h: Added functions to cache the declarative stack modifiers
21319         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21320         structure.
21321         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21322         created. Register internal calls for System.Security.SecurityFrame::
21323         _GetSecurityFrame and _GetSecurityStack.
21324         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21325         the definitions for the new stack walk/callback mechanism.
21326         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21327         first security frame for LinkDemands and InheritanceDemands) and
21328         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21329         from lupus.
21330         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21331         walk initialization (lupus).
21332
21333 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21334
21335         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21336         idiom.
21337         (handle_loaded_temps): Do not create a temporary variable for
21338         things that we know are temps. They will never be modified.
21339         (mono_spill_call): Set MONO_INST_IS_TEMP
21340         (mono_emulate_opcode): ditto
21341         (emit_tree): ditto
21342         (mono_method_to_ir.CEE_DUP): ditto
21343
21344 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21345
21346         * mini.c (type_to_eval_stack_type): Make this handle the void type
21347         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21348         (emit_tree): use ip_in_bb to special case some common idioms
21349         Update all callers to pass in the IP.
21350         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21351
21352         This gives us a nice 2% speedup in mcs bootstrap.
21353
21354         * mini-x86.c (peephole_pass): Peephole pass to make
21355         mov  [foo], eax
21356         push [foo]
21357
21358         into
21359
21360         mov [foo], eax
21361         push eax
21362
21363         * mini.c (ip_in_bb): new method.
21364         (mono_method_to_ir): use this method rather than doing the hash
21365         lookup ourselves.
21366
21367         * linear-scan.c (mono_linear_scan): When expiring actives, you
21368         don't need to keep around variables that expire on this
21369         instruction. This makes it so that:
21370              a = b + 1
21371         will turn into:
21372              store (ebx add (ebx, 1))
21373         which will become
21374              add ebx, 1
21375
21376 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21377
21378         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21379         combination to avoid doing two copies. Fix up problems with previous
21380         patch.
21381
21382         * mini.c: Fix 64 bit warnings.
21383
21384         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21385
21386 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21387
21388         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21389         changes from the x86 code.
21390
21391         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21392
21393 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21394
21395         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21396         throwing code to reduce its size, unify the AOT and non-aot code and 
21397         get rid of relocations in the AOT case.
21398
21399         * mini-x86.h mini.c exceptions-x86.c 
21400         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21401         raise corlib exceptions which doesn't require relocations in the 
21402         caller.
21403
21404         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21405
21406 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21409         needed.
21410
21411         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21412         in the AOT case.
21413
21414 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21415
21416         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21417         with add function when used from Inc/dec atomic 
21418         functions. Re-enabled optimization on x86.
21419         * mini-ops.h: renamed atomic_add functions to
21420         allow _add to match the Interlocked::Add and
21421         _add_next to match Interlocked::Inc/Dec.
21422
21423 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21424
21425         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21426         linking of BBs to the end BB, and enabled SSAPRE also with
21427         consprop and copyprop (which was prevented by that bug).
21428
21429 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21430
21431         * mini-x86.c: disabling the Interlocked optimizing code. 
21432
21433 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21436         file version check.
21437         
21438 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21439
21440         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21441         interlocked optimization due lack of support on x86, rewrote 
21442         exchange to take into account that base may be in eax.
21443         
21444         xsp works again; activated Interlocked optimizing code.
21445         
21446 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21447
21448         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21449
21450 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21451
21452         * mini-ops.h: Add new opcodes.
21453
21454         * mini.h: Add new patch types. Add got_var to MonoCompile.
21455
21456         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21457         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21458         make it work with all kinds of patchable code.
21459
21460         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21461         address of the GOT, and referencing entries in the GOT.
21462
21463         * mini.c: Add code to load the GOT address if needed by an opcode.
21464
21465         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21466         independent AOT code on the x86 using an elf-style Global Offset Table.
21467
21468 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21469
21470         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21471
21472 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21473
21474         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21475         when running xsp.
21476
21477 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21478
21479         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21480         of Interlocked:Increment/Decrement/Add as inline ops.
21481         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21482
21483 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21484
21485         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21486         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21487
21488 2004-12-12  Duncan Mak  <duncan@ximian.com>
21489
21490         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21491         again. `patch_info->table_size' is no longer valid after Zoltan's
21492         commit #37636.
21493
21494 2004-12-12  Martin Baulig  <martin@ximian.com>
21495
21496         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21497         if we are the "real" method, ie. not an inlined method inside it.
21498
21499 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21500
21501         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21502         before we look in the special fields table. This fixes
21503         ../tests/thread-static-init.cs.
21504
21505 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21506
21507         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21508         for Array get_Rank and get_Length. Fixes bug #70465.
21509
21510 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21513         separate structure to reduce the size of MonoJumpInfo.
21514
21515 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21516
21517         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21518
21519 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21520
21521         * mini.c (mini_get_inst_for_method): Changed to allow ports
21522         to return a MonoInst instead of opcode 
21523         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21524         
21525         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21526         Allow ports to return a created MonoInst instead of op-code, will enable
21527         new optimizations.
21528         (renamed mini_get_opcode_for_method to better reflected the functionality)
21529
21530 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21531
21532         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21533
21534 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21535
21536         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21537         Fixes #69985.
21538
21539 2004-12-08  Martin Baulig  <martin@ximian.com>
21540
21541         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21542         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21543
21544 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21545
21546         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21547         correctly.
21548
21549         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21550         arithmetic.
21551
21552 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21553
21554         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21555
21556 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21557
21558         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21559         bug introduced by the previous patch.
21560
21561 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21562
21563         * mini-ppc.c, objectc.cs: handle large structs passed by value
21564         (fixes bug #69972).
21565
21566 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21567
21568         * mini-ppc.c: OP_ARGLIST implementation from
21569         Geoff Norton  <gnorton@customerdna.com>.
21570
21571 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21572
21573         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21574         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21575
21576 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21577
21578         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21579
21580 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21581
21582         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21583         support.
21584
21585 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * mini-sparc.c: Zero out localled-ed memory.
21588
21589         * iltests.il: Add tests for zeroing out localloc-ed memory.
21590
21591 2004-12-04  Martin Baulig  <martin@ximian.com>
21592
21593         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21594         mono_method_get_signature_full().       
21595
21596 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21597
21598         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21599         and some utility functions (always for SSAPRE), integrated SSAPRE.
21600         * mini.h: Likewise.
21601         * driver.c: Added ssapre option.
21602         * ssa.c: Small fix on OP_ARG handling.
21603         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21604         * Makefile.am: Likewise.
21605
21606 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21609         now in the xp code.
21610
21611         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21612         icall.
21613
21614 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21615
21616         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21617         
21618         * cpu-s390.md : Increase instruction length of oparglist.
21619
21620         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21621
21622 2004-11-30  Martin Baulig  <martin@ximian.com>
21623
21624         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21625         virtual generic methods.  We call a special helper_compile_generic_method()
21626         icall to retrieve the method from the vtable, inflate and compile
21627         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21628
21629         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21630
21631 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21632
21633         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21634
21635 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21636
21637         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21638         Fixes #69929.
21639
21640 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21641
21642         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21643         platforms with PIC aot.
21644
21645 2004-11-28  Martin Baulig  <martin@ximian.com>
21646
21647         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21648         Fixes gen-112.cs.
21649
21650 2004-11-28  Martin Baulig  <martin@ximian.com>
21651
21652         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21653         the result of mono_type_get_underlying_type() to check whether
21654         we're byref.
21655
21656 2004-11-26  Martin Baulig  <martin@ximian.com>
21657
21658         * mini.c
21659         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21660         in the g_assert().
21661
21662 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21663
21664         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21665         the same way as the other arguments so they won't get clobbered.
21666
21667         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21668         calls through R11 since it is clobbered by the trampoline code.
21669
21670 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21671
21672         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21673         pick up in-tree mscorlib.dll.
21674
21675 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21676
21677         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21678
21679         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21680         runtime data/code are now stored in a table similar to the GOT in ELF. 
21681         This allows the code itself to be position independent.
21682
21683         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21684         loading changes.
21685
21686         * aot.c: Attach ELF type (object/function) directives to all global
21687         symbols.
21688
21689         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21690
21691         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21692
21693         * mini-amd64.h: Turn on PIC AOT code.
21694
21695         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21696         returning the offset within an OP_AOTCONST instruction where the GOT
21697         offset needs to be added.
21698
21699         * mini.h: Bump AOT file format version.
21700
21701 2004-11-25  Martin Baulig  <martin@ximian.com>
21702
21703         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21704         uninflated generic methods.
21705
21706 2004-11-25  Martin Baulig  <martin@ximian.com>
21707
21708         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21709
21710 2004-11-24  Martin Baulig  <martin@ximian.com>
21711
21712         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21713         original klass (this only applies for generic instances).
21714
21715 2004-11-24  Martin Baulig  <martin@ximian.com>
21716
21717         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21718         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21719         that array).
21720
21721 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21724         localloc. Fixes #69678.
21725
21726         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21727         
21728 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21729
21730         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21731         used SSE registers on pinvoke calls. Fixes #69774.
21732
21733 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21734
21735         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21736         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21737
21738 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21739
21740         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21741         Refer directly to the mcs/ tree.
21742
21743 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21744
21745         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21746         Check if a trampoline for a synchronized method is required. 
21747
21748 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21749
21750         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21751         with localloc if needed. Throe arithmetric exception in
21752         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21753         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21754
21755 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21756
21757         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21758         types before switching on type.  Fixes #69622.
21759
21760 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21761
21762         * Makefile.am (check-local): New.  Integrate into 'make check'.
21763         (MCS,RUNTIME): Define using in-tree mono and mcs.
21764         (ILASM): New.
21765         (%.exe): Use $(ILASM).
21766
21767 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21768
21769         * mini-ppc.c: adjust initial prolog size (bug #69691).
21770
21771 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21774         #69664.
21775
21776 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21777
21778         * Makefile.am (clean-local): Rename from 'clean'.
21779
21780 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21781
21782         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21783         to mono_arch_is_int_overflow. 
21784         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21785         SIGFPE events.
21786
21787 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21788
21789         * declsec.c|h: New files to support declarative security attributes.
21790         Added function to check if a method has (applicable) security.
21791         * mini.c|h: Add check for declarative security attributes in
21792         mono_method_check_inlining.
21793         * Makefile.am: Added declsec.c and declsec.h to the build.
21794
21795 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21796
21797         * mini.c, mini.h: update to keep dynamic code info per-domain.
21798
21799 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21802         (mini_init): Get rid of it from here too.
21803
21804 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21805
21806         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21807         implemented OP_RETHROW (patch by Geoff Norton
21808         <gnorton@customerdna.com>).
21809
21810 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21811
21812         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21813         between appdomains.  Fixes appdomain-unload on PPC.
21814
21815 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21816
21817         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21818         mini-exceptions.c: handle the new wrapper types.
21819         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21820         token value as a MonoClass* when compiling a wrapper.
21821         mono_jit_create_remoting_trampoline now takes an additional
21822         MonoRemotingTarget parameter.
21823         
21824 2004-11-10  Martin Baulig  <martin@localhost>
21825
21826         * mini.c (mono_method_to_ir): Use `generic_container->context'
21827         rather than creating a new one.
21828
21829 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21830
21831         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21832
21833         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21834
21835 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21838         the experimental aot cache stuff.
21839
21840 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21841
21842         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21843         mini-exceptions.c: update to exception clause structure changes.
21844
21845 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21846
21847         * exceptions-x86.c (throw_exception): Fix warnings.
21848
21849         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21850         for OP_RETHROW.
21851
21852 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21853
21854         * exceptions-sparc.c (get_throw_exception): Really fix this.
21855
21856 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21857
21858         * tramp-*.c: we no longer support icalls without wrappers, so
21859         a bit of code can be removed here
21860
21861 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21864         patch.
21865
21866         * cpu-sparc.md: Add op_rethrow.
21867
21868         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21869
21870         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21871
21872         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21873         * mini-ops.h: Add OP_RETHROW.
21874
21875         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21876
21877         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21878
21879 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21880         
21881         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21882         Makes the output much easier to read
21883
21884 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21885
21886         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21887         prevents another huge leak when compiling with ssa. Secondly, the
21888         performance of doing this rather than freeing the lists is much
21889         better. GList does a lock every time you allocate a list link,
21890         so that it can use a memory pool. So, it is better to just use
21891         a memory pool of our own.
21892         
21893         * ssa.c, linear-scan.c: replace g_list_remove_link with
21894         g_list_delete.  The remove one does not free the GList, so we were
21895         leaking memory. On -O=all --compile-all with corlib, this cut down
21896         3 MB of allocations.
21897
21898 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21899
21900         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21901
21902         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21903
21904         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21905         into a new function mono_create_jit_trampoline ().
21906
21907 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21908
21909         * trace.c (get_spec): Allow tracing of classes without a namespace.
21910
21911 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21912
21913         * mini.c: Fix pointer overwrite in mini_method_compile.
21914
21915 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21916
21917         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21918         The darwin ABI needs some special handling for 1 and 2 byte structs
21919         Lets use lbz/lhz instead of lwz everywhere.
21920         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21921         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21922         Use stb/sth for the former, and put the latter always on stack instead of in
21923         argument registers.
21924
21925 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * trace.c (is_filenamechar): Add '_'.
21928
21929 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21930
21931         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21932
21933         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21934
21935 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21936
21937         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21938         depends on libmonogc. Fixes #68805.
21939
21940 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21941
21942         * mini.c (mono_jit_free_method): Provide extra information for
21943         this error.  Currently this leaks, but will be turned into a
21944         developer option in the future.
21945
21946 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21947
21948         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21949
21950 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21953         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21954         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21955
21956 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21957
21958         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21959         trampolines for AOT code.
21960
21961 2004-10-22    <vargaz@freemail.hu>
21962
21963         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21964         constructed types. Fixes #68136.
21965
21966 2004-10-21  Martin Baulig  <martin@ximian.com>
21967
21968         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21969         if it returns true, unwind the stack to the call instruction.
21970
21971 2004-10-21    <vargaz@freemail.hu>
21972
21973         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21974
21975         * mini.h: Bump AOT version number.
21976
21977         * objects.cs: Add another test for unbox trampolines.
21978
21979         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21980         valuetype methods.
21981
21982 2004-10-20    <vargaz@freemail.hu>
21983
21984         * driver.c: Add SHARED to the set of optimizations tested.
21985
21986         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21987
21988         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21989         used by CEE_NEWARR.
21990
21991         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21992
21993 2004-10-20  Martin Baulig  <martin@ximian.com>
21994
21995         * mini-exceptions.c (mono_handle_exception): Call
21996         mono_debugger_handle_exception() to tell the debugger about
21997         catch/finally clauses.
21998
21999 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22000
22001         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22002
22003         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22004         #68447.
22005
22006 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22007
22008         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22009         methods as their native size, fixed bug #57543, #57545.
22010         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22011         This saves a temporary register and mullw call down into 1 (minor perf
22012         increase for cases like sum = sum * 5;  This use to translate into:
22013             li r11,5
22014             mullw r28,r28,r11
22015         It now translates to
22016             mulli r28,r28,5
22017
22018 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22019
22020         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22021         #68388.
22022
22023 2004-10-11  Martin Baulig  <martin@ximian.com>
22024
22025         * mini.c (mono_method_to_ir): If we're a generic method, get the
22026         MonoGenericContainer from our MonoMethodNormal and create a
22027         MonoGenericContext from it.
22028
22029 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22030
22031         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22032
22033         * basic-long.cs: Add test for checked i8->i2 cast.
22034
22035 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22036
22037         * inssel-ppc.brg: added a couple of speedup rules.
22038
22039 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22042         to speed up rebuilds.
22043
22044 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22045
22046         * mini-s390.c: Minor fix to OP_OR_IMM.
22047
22048 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22051         better. Fixes appdomain-unload.exe on sparc.
22052
22053 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22054
22055         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22056         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22057         see bug 67324.
22058
22059 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22060
22061         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22062
22063 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22064
22065         * mini.c: Always generate a field read/write wrapper for members
22066         of the class MarshalByRefObject since the actual instance could
22067         be a CBO.
22068
22069 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22070
22071         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22072
22073 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * driver.c mini.h trace.c: Move the setting of the main assembly into
22076         a separate function called mono_trace_set_assembly () and call it after
22077         actually loading the main assembly. Fixes #66872.
22078
22079 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22082         using the code manager.
22083
22084 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22085
22086         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22087
22088 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22089
22090         * cpu-amd64.md: Fix bug in previous patch.
22091         
22092         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22093         #66650.
22094
22095 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22096
22097         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22098         mini-exceptions.c: updates for changed stack walk interface.
22099
22100 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22101
22102         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22103
22104 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22105
22106         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22107
22108 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22111         since assemblies can't be unloaded.
22112         
22113 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22114
22115         * cpu-amd64.md: Fix more instruction lengths.
22116
22117         * cpu-amd64.md: Fix lengths of some instructions.
22118
22119 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22120
22121         * inssel.brg: Make the array ldelema check aot friendly.
22122
22123 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22126
22127         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22128
22129 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * mini-x86.c: Fix build.
22132
22133         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22134         mono_type_get_underlying_type () helper function to simplify code.
22135         
22136 2004-09-09  Martin Baulig  <martin@ximian.com>
22137
22138         * mini-amd64.c: Don't access `type->data.klass' directly, call
22139         mono_class_from_mono_type() instead since the type may be a
22140         generic instance.
22141
22142 2004-09-09  Martin Baulig  <martin@ximian.com>
22143
22144         * mini-amd64.c (get_call_info): Fix support for generic instances.
22145         (add_valuetype): Use mono_class_from_mono_type() to get the class
22146         since we can be a generic instance.
22147
22148 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22149
22150         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22151
22152 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22153
22154         * liveness.c: reset spill costs on each scan: bug 62107
22155
22156 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22157
22158         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22159         unnecessary line that doesn't compile
22160
22161 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22162
22163         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22164         trampolines, make them call an error function so people can fix their
22165         code.
22166
22167 2004-09-06  Martin Baulig  <martin@ximian.com>
22168
22169         * mini.c (mono_method_to_ir): When initializing locals, handle a
22170         generic instances like a valuetype if it's a valuetype and like a
22171         class if it's a class.
22172
22173 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22176         stack. Fixes #64674.
22177
22178         * exceptions.cs: Add test for unwinding of call arguments.
22179
22180 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22181
22182         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22183         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22184         set the carry/borrow flag). The sparc and s390 implementations
22185         can now use optimized versions (and simplify the code). ppc bugfixes.
22186
22187 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22190
22191 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * inssel-amd64.brg: Remove leftover 32 bit rule.
22194
22195         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22196
22197 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22198
22199         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22200         mono_arch_find_jit_info functions into a new function. Fix a memory
22201         leak.
22202
22203         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22204         refactored code.
22205         
22206 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22207
22208         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22209         as well.
22210         
22211         * exceptions.cs: Add array size tests.
22212
22213         * mini.c: Allocate a separate icall wrapper for each arity of 
22214         mono_array_new_va. Fixes #59509.
22215
22216         * exceptions.cs: Add testcase for 64578.
22217
22218         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22219
22220         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22221         
22222 2004-09-02  Martin Baulig  <martin@ximian.com>
22223
22224         * mini.c (mono_method_to_ir): When initializing the locals, call
22225         handle_initobj() on the generic instance itself, not its
22226         underlying type.
22227
22228 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22229
22230         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22231         MonoJitInfo for dynamic methods.
22232
22233         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22234
22235         * mini.c: Add support for freeing JIT data for dynamic methods.
22236         
22237 2004-09-01  Martin Baulig  <martin@ximian.com>
22238
22239         * mini-x86.c (is_regsize_var): Added support for generic
22240         instances.
22241         (mono_arch_emit_prolog): Make this compile again, use
22242         `x86_push_imm_template (code)'.
22243
22244 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22245
22246         * mini-x86.c: make all push_imm instructions that get
22247         patched always emit the long form
22248
22249 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22252         in a per-domain hash.
22253
22254         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22255         types.
22256
22257 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22260         work.
22261         
22262         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22263         work.
22264
22265         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22266         Beginnings of SSE2 support.
22267
22268         * exceptions.cs: Add more tests for checked int<->uint casts.
22269
22270 2004-08-28  Martin Baulig  <martin@ximian.com>
22271
22272         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22273         generic instances.
22274
22275         * mini.c
22276         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22277         Handle generic instances recursively.
22278
22279 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22280
22281         * iltests.il: test for conv.u8 on a constant
22282
22283 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22284
22285         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22286         LCONV_x4 (shrun_32 (membase)).
22287
22288 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22289
22290         * inssel-x86.brg: c&p rules for push/setret of long
22291
22292 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22293
22294         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22295         compare (regvar, base)
22296
22297         * inssel-x86.brg: more burg love
22298
22299         * inssel.brg: more cleanup
22300
22301         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22302
22303 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22304
22305         * basic-long.cs, basic-calls.cs: new tests for optimization.
22306
22307 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22308
22309         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22310         patch.
22311
22312 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22313
22314         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22315         
22316 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22317
22318         * inssel.brg (mini_emit_memcpy): use 
22319         NO_UNALIGNED_ACCESS to disable memcpy optimization
22320
22321 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * mini-amd64.c: Handle generic types in various places.
22324
22325         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22326
22327 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22328
22329         * mini.c (handle_box): Fix warning.
22330
22331         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22332
22333         * mini-amd64.h: Enable the emit_state optimization.
22334
22335         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22336
22337         * mini-amd64.c: Add some new 64 bit peephole opts.
22338
22339         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22340
22341         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22342
22343         * mini-amd64.c: Register allocator fixes.
22344
22345         * mini.c: Add an optimization to emit_state to avoid allocation of new
22346         registers on some platforms.
22347
22348 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22349
22350         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22351
22352         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22353         allocation. Fixes #63085.
22354
22355         * basic-long.cs: Add new regression test.
22356
22357         * mini-amd64.c: Register allocator improvements.
22358
22359 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22360
22361         * mini-amd64.c (read_tls_offset_from_method): Add another code
22362         sequence.
22363
22364         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22365         instruction sequence for nullifying class init trampolines.
22366
22367         * objects.cs: Add new regalloc test.
22368
22369         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22370
22371 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22372
22373         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22374         
22375         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22376         arguments.
22377
22378         * driver.c: Fix profiling after TLS changes.
22379         
22380         * driver.c (mono_main): Set mono_stats.enabled if needed.
22381
22382         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22383         CEE_BOX.
22384
22385 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22386
22387         * mini-x86.c: use a 1 op rather than a 2 op tls access
22388         instruction -> faster.
22389
22390 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22393         x86 backend.
22394
22395 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22396
22397         * exceptions-sparc.c (throw_exception): fix typo
22398
22399 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22400
22401         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22402         set tree->dreg correctly with tls. Allow any
22403         register to be used.
22404
22405         * mini-x86.c (read_tls_offset_from_method): add new code
22406         generation pattern seen with GCC.
22407
22408
22409 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22410
22411         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22412         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22413         exceptions-sparc.c: fix some performance issues in exception
22414         handling and setting of the stack trace for exceptions that were
22415         already thrown.
22416
22417 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22420         x86 backend.
22421         
22422         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22423         registers.
22424
22425 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22426
22427         This patch inlines tls access, when possible.
22428         
22429         * mini.h: new arch functions for TLS intrinsics.
22430         All platforms updated with a stub.
22431
22432         * mini.c: use the new intrinsics
22433
22434         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22435         arch specific intrinsic for tls variables
22436
22437 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22438
22439         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22440         under windows.
22441
22442 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22443
22444         * mini.c: thread local allocation
22445
22446 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22447
22448         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22449
22450         * Makefile.am: Link against the static version of libmonogc.
22451         
22452         * Makefile.am: Link the static versions of the convenience libraries
22453         into the mono executable.
22454
22455         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22456
22457 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22458
22459         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22460         on integer overflow.
22461
22462         * mini-amd64.c: Reorganize function call code.
22463
22464         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22465
22466 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22467
22468         * inssel-x86.brg: use xor eax,eax.
22469         
22470         * basic.cs: new tests
22471
22472 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22473
22474         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22475         in exception throwing code.
22476         
22477 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22478
22479         * inssel-x86.brg: use xor esi,esi.
22480
22481 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22482
22483         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22484         can trace methods compiled during mini_init () too.
22485
22486         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22487         CEE_CONV_U4.
22488
22489 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22490
22491         * Makefile.am: static link on x86 (r=zoltan)
22492
22493 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22494
22495         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22496         code since it causes some programs to fail.
22497
22498 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22499
22500         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22501
22502 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22503
22504         * mini.c: ovfops_op_map - add STACK_OBJ case for
22505         CONV_I 
22506         * basic.cs: add test_0_pin_string as test
22507         case for above.
22508
22509 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22510
22511         * Makefile.am: build C# if srcdir != builddir
22512
22513 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22514
22515         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22516         fall-through blocks.
22517
22518 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22519
22520         * driver.c: enable loop by default again and include abcrem in -O=all.
22521
22522 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * iltests.il: Add some localloc tests.
22525
22526         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22527
22528         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22529         Fixes #62574.
22530
22531         * inssel-amd64.brg: Add some optimizations.
22532
22533         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22534         for gcc-3.4.
22535
22536         * Makefile.am: Statically link mono against libmono on AMD64.
22537         
22538         * mini-amd64.c inssel-amd64.brg: Optimizations.
22539
22540 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22541
22542         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22543
22544         * tramp-amd64.c: Patch calling code in trampolines.
22545
22546 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22547
22548         * mini-amd64.c: pinvoke struct passing fixes.
22549
22550 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22551
22552         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22553         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22554
22555 2004-08-05  Duncan Mak  <duncan@ximian.com>
22556
22557         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22558         CEE_LDELEM_ANY.
22559
22560 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22561
22562         * mini-amd64.c (emit_move_return_value): Move return value for normal
22563         calls too.
22564
22565 2004-08-05  Martin Baulig  <martin@ximian.com>
22566
22567         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22568         `type->type'; just modify `type' itself when dealing with enums
22569         and generic instances.
22570         (check_call_signature): Make `simple_type' a `MonoType *'.
22571
22572 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22573
22574         * mini.c: Use OP_PADD to add offsets to addresses.
22575
22576         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22577
22578 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22579
22580         * mini-sparc.c (mono_arch_emit_epilog): fix check
22581         for folding last op into restore instruction
22582
22583 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22584
22585         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22586         helper methods using the code manager.
22587         
22588         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22589
22590         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22591
22592 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22593         
22594         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22595           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22596
22597         * mini-s390.c: fix tail processing
22598
22599 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22600
22601         * mini-ppc.c: mul.ovf.un exception name fix.
22602
22603 2004-08-03  Martin Baulig  <martin@ximian.com>
22604
22605         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22606         instances; before jumping to `handle_enum', also modify `ptype'.
22607
22608 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22609
22610         * cpu-sparc.md: fcall maximal length too small.
22611
22612 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22613
22614         * mini-amd64.c mini.h: Add initial support for passing/returning 
22615         structures to/from pinvoked methods.
22616
22617 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22618
22619         * mini-ppc.c: reg allocator fix.
22620
22621 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22622
22623         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22624
22625         * inssel.brg: Optimize memset on 64 bit machines.
22626
22627         * mini-amd64.c: Fix some vararg cases.
22628
22629 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22630
22631         * mini-s390.c: Corrected macro in emit_float_to_int
22632
22633         * s390-abi.cs: Tests to exercise the s390 ABI
22634
22635 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22636
22637         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22638         caller saved regs.
22639
22640         * basic.cs: Add a test for add.ovf.un.
22641
22642 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22643
22644         * mini-sparc.c: add case for OP_IDIV_UN
22645
22646 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22647
22648         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22649         
22650         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22651
22652 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22653
22654         * basic.cs: regression tests.
22655
22656         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22657         regressions.
22658
22659 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22660
22661         * basic.cs: Add a new test.
22662
22663         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22664         and AOT. Various fixes and optimizations.
22665
22666         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22667
22668 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22669
22670         * mini-ppc.c: make sure temp regs are not used for global reg
22671         allocation.
22672
22673 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22674
22675         * cpu-sparc.md: conv_i8 fix for 64bits
22676
22677         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22678
22679 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22680         
22681         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22682         add opcode for cmp BYTE PTR [eax], imm.
22683
22684         * inssel.brg: Make memcpy and memset takes bases.
22685
22686 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22687
22688         * *-amd64.*: More AMD64 work.
22689         
22690 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22691
22692         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22693         add a compare-not-equal opcode.
22694         
22695 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22696
22697         * mini.c: Use mono_init_from_assembly instead of mono_init.
22698         
22699 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22702
22703         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22704
22705         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22706
22707         * inssel.brg: 64 bit fixes.
22708
22709         * mini.h (MonoCallInst): Add some AMD64 specific data.
22710
22711         * mini.h: Add some OP_P opcodes.
22712
22713 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22714
22715         * basic.cs: tests for 61797 and 61740
22716
22717 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22718
22719         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22720         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22721
22722 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22725
22726         * *-amd64*.*: Ongoing AMD64 work.
22727
22728 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22729
22730         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22731
22732         * *-amd64*: Ongoing AMD64 work.
22733
22734         * mini-arch.h: Add AMD64 support.
22735
22736         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22737
22738         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22739
22740         * mini-ops.h: Add new opcodes.
22741
22742         * Makefile.am: Add AMD64 support.
22743
22744         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22745         rules into the inssel-long*.brg files.
22746
22747         * *-amd64.*: Add beginnings of AMD64 backend.
22748
22749 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22750
22751         * mini.c (print_dfn): commenting out the code that prints
22752         the cil. With -O=deadce, this makes -v -v crash.
22753         
22754         * cpu-pentium.md: make checkthis have a length of 2
22755
22756 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22757
22758         * mini-sparc.h: fix implementations of __builtin
22759         functions for Sun compiler for V9.
22760
22761 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22762
22763         * mini.c: use the new stelem.ref wrapper
22764         * exceptions.cs, arrays.cs: new stelem.ref tests
22765
22766 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22767
22768         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22769         new XSP should work with these changes).
22770
22771 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22772         
22773         * inssel-{long32,x86,}.brg: trivial optimizations.
22774         
22775 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22776
22777         * mini.c: load value when emitting box operation in
22778         constrained calls.
22779
22780 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22781
22782         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22783         is one byte shorter than cmp DWORD PTR [eax], 0.
22784
22785 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22786
22787         * inssel-ppc.brg: arguments on the stack are always
22788         relative to the stack pointer (spotted by Neale Ferguson).
22789
22790 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22791
22792         * exceptions-x86.c: delay appending the method name to the trace until
22793         after mono_jit_info_table_find is called, as this gets the real
22794         MonoMethod.
22795
22796 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22797
22798         * aot.c: register roots
22799
22800 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22801
22802         * aot.c : I could just use PLATFORM_WIN32 flag.
22803
22804 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22805
22806         * aot.c : Reverting the previous fix. This time it broke linux build.
22807
22808 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22809
22810         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22811
22812 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22813
22814         * mini.c (handle_stack_args): Remove some more debugging code.
22815         
22816         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22817
22818         * driver.c mini.h aot.c: Allow additional options to be specified with
22819         --aot and pass them to mono_compile_assembly.
22820
22821         * aot.c: Add experimental code to AOT compile all loaded assemblies
22822         on demand and save the code into a cache in the filesystem.
22823
22824         * aot.c: Add support for more wrapper methods.
22825         
22826         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22827         58863.
22828
22829         * cpu-*.md: Remove removed opcodes.
22830
22831         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22832         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22833         related icalls to marshal.c.
22834
22835 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22836
22837         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22838
22839         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22840
22841         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22842
22843 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22844         * liveness.c: If liveness is recomputated we need to reset the information
22845         for each variable. This way, if the liveness range has been narrowed
22846         by optimizations that happened after the last computation, we can return
22847         a smaller range.
22848         
22849         For example, if you have
22850         
22851         {
22852                 int i = 0;
22853                 
22854                 // Tons of code that does not affect i
22855                 
22856                 i = foo ();
22857                 ...
22858         }
22859         
22860         i = 0 is dead code and will be removed by SSA. However, when
22861         linear scan gets to the code, i will still appear to be live
22862         throughout the entire block. This prevents good register allocation.
22863
22864 2004-07-06  Martin Baulig  <martin@ximian.com>
22865
22866         * debug-mini.c (mono_debug_init_method): Allow
22867         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22868         (mono_debug_add_icall_wrapper): New method.
22869
22870         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22871
22872 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22875         optimization.
22876
22877 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22878
22879         * aot.c (mono_aot_load_method): Fix loading of debug info.
22880
22881 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22882
22883         * aot.c: Add logging support.
22884
22885 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22886
22887         * mini.h: Add prototype for mono_print_method_from_ip.
22888
22889         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22890
22891         * inssel.brg: 64 bit fixes.
22892
22893         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22894         inssel-long32.brg.
22895
22896         * Makefile.am: Add SPARC64 support.
22897
22898 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * aot.c: Fix alignment problems on 32 bit platforms.
22901
22902 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22905         SPARC64.
22906
22907         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22908         problems.
22909
22910         * mini.h: Bump AOT file version. Some 64 bit fixes.
22911
22912 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22913
22914         * inssel-sparc.brg: Add new rule to avoid register moves.
22915
22916         * inssel.brg: Add ldind_to_load_membase helper function.
22917
22918 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22919
22920         * mini.c: OffsetToStringData intrinsic.
22921         
22922 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22923
22924         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22925
22926         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22927         regression tests.
22928
22929         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22930 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22931
22932         * mini.c: reinstated mono_compile_get_interface_var()
22933         on x86, too, since the change breaks the Gtk# build there as well.
22934
22935 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22936
22937         * driver.c: remove loop from the default optimizations: it seems to
22938         interact badly with some of the other options (see bug #60613).
22939
22940 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22941
22942         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22943         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22944
22945 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22946
22947         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22948         vararg-using methods.
22949
22950 2004-06-21  Martin Baulig  <martin@ximian.com>
22951
22952         * mini/mini-exceptions.c
22953         (mono_handle_exception): Added `gpointer original_ip' argument.
22954         After calling mono_unhandled_exception(), call
22955         mono_debugger_unhandled_exception() and if that returns true,
22956         restore the context and return.
22957
22958 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22959
22960         * mini-ppc.c: prefer the use of relative branches so
22961         they won't need to be patched in aot code (patch from Patrick Beard).
22962
22963 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22964
22965         * aot.c: patch from Patrick Beard to make the output assembly
22966         more correct for the MacOSX assembler. Small tweak to
22967         generate sane images on Linux/PPC, too.
22968
22969 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22970
22971         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22972         case until bug #59509 is fixed (shows up in #60332).
22973
22974 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22975
22976         * mini.c: make sure the needed wrappers are compiled, too, with
22977         precomp.
22978
22979 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22980
22981         * driver.c: remove NPTL reference in --version output.
22982
22983 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22984
22985         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22986         generate valid assembly for the Mach-O assembler.
22987
22988 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22989
22990         * driver.c: don't include abcrem in the all optimization specifier
22991         since it slows down jit compilation too much for now.
22992
22993 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22994
22995         * mini.c: use BIGMUL only if both operands have the same signage.
22996         * iltests.il: Test for bug 60056. (errors related to signage in
22997         BIGMUL).
22998
22999         r=lupus.
23000
23001 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23002
23003         * mini.c, aot.c: memory leak fixes.
23004
23005 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23006
23007         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23008
23009 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23010
23011         * Makefile.am: remove the -static hack completely, it links in
23012         statically glib as well.
23013
23014 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23015
23016         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23017         * exceptions.cs: make it compile with new mcs/csc.
23018
23019 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23020         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23021         and added relevant test case.
23022
23023 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23024
23025         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23026         regressions in gtk-sharp.
23027
23028 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23029
23030         * exceptions.cs: New regression tests.
23031
23032         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23033
23034 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23035
23036         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23037
23038 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23039
23040         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23041
23042         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23043
23044 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23045
23046         * mini.c (mono_jit_runtime_invoke): Init class in this
23047         method instead of trusting mono_jit_compile_method to
23048         do the work (because wrappers can be in object class)
23049
23050 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23051
23052         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23053
23054         * basic-long.cs: New regression test.
23055
23056 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23057
23058         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23059         and div/rem checks.
23060
23061 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23062
23063         * Makefile.am: fix miguel's change to build mono statically against
23064         libmono (track build dependencies).
23065
23066 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23067
23068         * cfold.c: Some glib versions do not have G_MININT32.
23069
23070 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23071
23072         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23073         with precision of tan, atan, sin and cos, and implemented related
23074         regressions tests (fixes bug 54467, but one new problem appeared and
23075         is not fixed yet).
23076
23077 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23078
23079         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23080
23081         * exceptions.cs: Add test for constant folding && division by zero.
23082
23083         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23084         since driver.c is in libmono too, so the optimization was useless.
23085
23086         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23087         variable to driver.c so the compiler can emit more efficient code to
23088         access them.
23089
23090 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23091
23092         * Makefile.am: don't distribute generated inssel.[ch] files.
23093
23094 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23095
23096         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23097         into the default appdomain. Fixes #58707.
23098
23099         * jit-icalls.c: Remove the broken approximation for truncl, doing
23100         no conversion is better.
23101
23102         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23103         Fixes #58863.
23104
23105 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23106
23107         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23108         of the mcrxr instruction which is not available on some processors
23109         even if it's documented to be. Implement add and sub overflow correctly
23110         (still not complete for long unsigned). Speed up icalls a bit.
23111
23112 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23113
23114         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23115         we run .cctor in the current domain instead of target_domain.
23116         
23117         Fixes bug #58558, .cctor not being called in -O=shared.
23118
23119 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23120
23121         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23122
23123 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23124
23125         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23126         which can be done with an imm8, do it that way.
23127         (mono_arch_output_basic_block): ditto for a jmp
23128         (mono_arch_emit_prolog): Computate maximum offset of a label.
23129
23130 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23131
23132         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23133         now tries to allocate prefered physical reg's for virtual
23134         regs. This reduces the number of emited spills/loads with
23135         20-30% on our core assemblies.
23136
23137 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23138
23139         * jit-icalls.c: truncl() is not needed and trunc() is
23140         the correct thing to do anyway (bug #58287).
23141
23142 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23143
23144         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23145         if available.
23146
23147 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23148
23149         * driver.c: enable loop optimizations by default.
23150
23151 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * mini-x86.c: fix calc of max loop size when aligning loops start.
23154
23155 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23156
23157         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23158         the stack.
23159
23160 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23161
23162         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23163         should set carry.
23164
23165         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23166
23167         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23168         
23169         * mini.c (inline_method): Allways inline some wrappers even if the cost
23170         is too large. Fixes #58785.
23171
23172         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23173         
23174 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23175
23176         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23177         (crichton@gimp.org). Beginning of support for sparc/linux.
23178
23179         * mini-sparc.c: Optimize retrieval of LMF address.
23180
23181 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23182
23183         * exceptions-ppc.c:  handle alloca in methods with clauses.
23184
23185 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23186
23187         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23188
23189 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23190
23191         * mini.c: Delegate most of the abort signal work to 
23192           mono_thread_request_interruption, which also handles Stop and Suspend
23193           states.
23194
23195 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23196
23197         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23198         supports the save/restore lmf opcodes.
23199
23200 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23201
23202         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23203         by gcc-3.4 as well.
23204
23205         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23206
23207 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23208
23209         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23210         methods which contain array accesses.
23211
23212         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23213         boundaries. Fixes #58537.
23214
23215         * iltests.il: Add regression test for #58537.
23216
23217 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23218
23219         * mini-x86.c (mono_arch_local_regalloc): Last part of
23220         fix for bug #58633 (releasing register to early).
23221
23222 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23223
23224         * basic-long.cs: Add new regression test.
23225
23226 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23227
23228         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23229         register too early on the chain.
23230
23231 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * mini.c (create_helper_signature): Use a helper function to reduce
23234         the code which needs to be written. Also set the calling convention of
23235         icalls on windows. Fixes #57840.
23236
23237 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23238
23239         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23240         exceptions-ppc.c: added helper function to get the instruction address
23241         from a signal handler context.
23242
23243 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23244
23245         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23246         from gonzalo.
23247
23248 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23249
23250         * helpers.c: Add new env variable to pass args to objdump.
23251         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23252
23253 2004-05-17  Radek Doulik  <rodo@ximian.com>
23254
23255         * Makefile.am (common_sources): added abcremoval.h so it get
23256         disted and daily mono packages on go-mono.com will build again
23257
23258 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23259
23260         * abcremoval.c: Fixed coding style, added copyright header.
23261
23262         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23263
23264         * mini.h: Added prototype for abc removal main function.
23265
23266         * build_relations_propagation_table.pl: Added copyright header.
23267
23268 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23269
23270         * basic-long.cs: reg test for complex ceq_long bug.
23271
23272 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23273
23274         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23275         reg in long and clob case (bug #58343). Fixed/added comments.
23276
23277 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23278
23279         * mini.c (mono_jit_runtime_invoke): Follow new convention
23280         of calling the invoke method with an function pointer.
23281
23282 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23283
23284         * ChangeLog: Fix author of memory leak patch.
23285
23286 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23287
23288         * Makefile.am: fix make dist as well...
23289
23290
23291 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23292
23293         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23294         on archs where pointers are 4 bytes long.
23295
23296         * Makefile.am: Added abcremoval.c source file.
23297
23298         * abcremoval.c: Added abcremoval.c.
23299
23300         * abcremoval.h: Added abcremoval.h.
23301
23302         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23303
23304         * inssel.brg: Enabled bounds check removal.
23305
23306         * mini.c: Added support for abcrem optimization.
23307
23308         * mini.h: Added abcrem optimization label.
23309
23310         * driver.c: Added support for abcrem optimization.
23311
23312         * propagated_relations_table.def: Added propagated_relations_table.def.
23313
23314 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23315
23316         * mini.c, cfold.c: fix style.
23317
23318 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23319
23320         * mini.c: handle issue with the low-level implementation of
23321         some long opcodes (bug #54209).
23322
23323 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23324
23325         * basic.cs: test for my new cmov stuff.
23326
23327 2004-05-13      Patrik Torstensson
23328
23329         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23330         opt and added peephole documentation.
23331
23332 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23333
23334         * tramp-ppc.c: rewrote the generic trampoline code.
23335
23336 2004-05-11      Patrik Torstensson
23337
23338         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23339
23340 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23341
23342         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23343
23344         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23345         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23346
23347         * mini.c: Add new icalls for AsAny marshalling.
23348
23349 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23350
23351         * tramp-ppc.c, mini-ppc.c: more cleanups.
23352
23353 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23354
23355         * mini.c: no warnings.
23356
23357 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23358
23359         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23360
23361 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23362
23363         * mini.c: In the thread abort signal handler, if the thread is in the
23364         process of being stoped, don't throw the Abort exception, just stop the
23365         thread.
23366
23367 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23368
23369         * tramp-ppc.c: removed old code.
23370
23371 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23372
23373         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23374         do some simple speed optimizations on ppc.
23375
23376 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23379         and large offsets in load/store.
23380
23381 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23382
23383         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23384         it causes regressions.
23385
23386 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23387
23388         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23389         support.
23390
23391 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23392
23393         * jit-icalls.c: remove warnings.
23394         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23395         speedups for unsafe code.
23396
23397 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23398
23399         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23400
23401 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23402
23403         * basic-calls.cs: Add new regression test.
23404
23405         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23406         more portable.
23407
23408         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23409
23410         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23411         is no longer used.
23412
23413 2004-05-06      Patrik Torstensson
23414
23415         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23416         long reg allocation in any reg (not only eax:edx) and implemented 
23417         long shl/shr ops in asm instead of helpers.
23418
23419 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23420
23421         * mini-sparc.h: Fix warnings.
23422
23423         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23424         stack.
23425
23426         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23427         separate statement for clarity.
23428
23429         * mini-sparc.c: Update status.
23430
23431 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23432
23433         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23434         here.
23435
23436 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23437
23438         * inssel-ppc.brg: another small pre-release workaround:
23439         we don't do overflow detection for long_sub_un.
23440
23441 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23442
23443         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23444         (also works around a weird ppc bug: 57957).
23445
23446 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23447
23448         * tramp-ppc.c: trampoline fixes.
23449
23450 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23451
23452         * mini-ppc.c: fixed typos.
23453
23454 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23455
23456         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23457         at the top of the stack. Fixed typos. Use a frame registers
23458         for all the methods with exception clauses.
23459
23460 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23461
23462         * exceptions-ppc.c: restore fp registers.
23463
23464 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23465
23466         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23467         order from the stack top (moved the stack room to save the
23468         return value for trace after the param area). Fixed corruption
23469         in restoring registers on unwind.
23470
23471 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23472
23473         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23474
23475 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23476
23477         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23478         and prolog/epilog for methods that use it. Allow
23479         enough param area room for varargs methods. Fix miguel's
23480         breakage in exception handling.
23481
23482 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23483
23484         * Makefile.am: run genmdesc only on current arch.
23485
23486 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23487
23488         * exceptions-x86.c:
23489         * mini-x86.h: fix the build on windows.
23490
23491 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23492
23493         * 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.
23494
23495         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23496
23497         * mini-exceptions.c: New file.
23498         
23499         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23500         Move some parts of the x86 exception handling code to an 
23501         arch-independent file so it can be shared with other ports.
23502
23503 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23504
23505         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23506
23507 2004-04-26  David Waite  <mass@akuma.org>
23508
23509         * driver.c: remove comma from end of enumeration declaration
23510
23511 2004-04-26  Jackson Harper  <jackson@ximian.com>
23512
23513         * driver.c: parse config file before loading first assembly. This
23514         allows the user gac to be enabled/disabled. 
23515         
23516 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23517
23518         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23519         simpler mechanism: we do not care what is encoded initially
23520         (branch absolute or relative), we care about the code and its
23521         target.  I kept the old code for reference for now.
23522
23523         The new code tries first to determine if the jump is anywhere in
23524         the -/+32 absolute meg range, if it succeeds, it encodes using the
23525         absolute branch;  If not, it tried to find something in the
23526         relative range, if not, it uses the handle_thunk code. 
23527
23528 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23529
23530         * exceptions-ppc.c: use the correct ip register on macosx.
23531
23532 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23533
23534         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23535
23536 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23537
23538         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23539         Raise exception on integer divide by zero by hand since the hw
23540         doesn't support it. Handle NaNs in FP compares.
23541
23542 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23543
23544         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23545         code reducing duplication between the platforms and enabled
23546         signal exception handling (on linux for now).
23547
23548 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23549
23550         * exceptions-ppc.c: more macosx support.
23551
23552 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23553
23554         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23555
23556 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23557
23558         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23559
23560 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23561
23562         * iltests.il: more tests.
23563
23564 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23565
23566         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23567         vars as well.
23568
23569 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23570
23571         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23572
23573 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23574
23575         * liveness.c: Mark variables as volatile in all basic blocks reachable
23576         from exception clauses.
23577
23578 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23581         inlining.
23582
23583 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23584
23585         * iltests.il, basic.cs: more tests for regalloc.
23586
23587 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23588
23589         * iltests.il: Some tests for register allocation modifications
23590         I have locally.
23591
23592 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23593
23594         * exceptions.cs: Add regression test for bug #56782.
23595
23596         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23597         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23598         the beauty of fixing the same thing in 5 different files...
23599
23600 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23601
23602         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23603         methods.
23604
23605 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23606
23607         * mini.c: Add support for STRWLPARRAY marshalling convention.
23608
23609 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23610
23611         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23612         to init the context to setup the regs pointer).
23613
23614 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23615
23616         * exceptions-ppc.c: more exceptions work.
23617
23618 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23619
23620         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23621         not allowed.
23622
23623 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23624
23625         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23626         can use the memory directly.
23627
23628         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23629
23630         add x86_add_membase, x86_sub_membase, x86_mul_membase
23631
23632 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23633
23634         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23635         GENERAL_REGS they were also hardcoded for all PPC ports.
23636
23637         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23638
23639         Remove hard-coded limit for floating point registers, use
23640         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23641
23642         Notice that in MacOS X calling conventions you can fit a lot more
23643         floating point values in registers, so I should update the PInvoke
23644         test to excercise the passing of floating point values on the
23645         stack (currently broken).
23646         
23647 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23648
23649         * tramp-ppc.c (create_trampoline_code): Added
23650         JUMP_TRAMPOLINE_SIZE. 
23651         (ppc_magic_trampoline): Follow the pattern from
23652         x86_magic_trampoline: if code is set to zero, return. 
23653         (create_trampoline_code): Always pass MonoMethod to the jump
23654         trampoline, before it was passing a null.
23655         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23656         share the code with mono_arch_create_jit_trampoline. 
23657
23658         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23659         implemented.
23660         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23661         implemented.  
23662
23663         * cpu-g4.md: Added length for jmp instruction, the worst case
23664         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23665         for save_lmf).
23666
23667 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23670
23671 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23672
23673         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23674         before each IL instruction.
23675
23676         * mini.c (CEE_BOX): Fix warnings.
23677
23678 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23679
23680         * mini.c: removed a few unused vars and extra whitespace.
23681
23682 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23683
23684         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23685         checks.
23686         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23687         index.
23688         (OP_GETCHR): use the above
23689         (CEE_LDELEMA): use the above.
23690
23691         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23692         version of the generic impl.
23693         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23694         (CEE_LDELEMA): use the above.
23695
23696 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23697
23698         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23699         Fixes #56317.
23700
23701         * iltests.il: Added new regression test for #56317.
23702
23703 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23704
23705         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23706         under NetBSD. Fixes #56450.
23707
23708         * liveness.c (update_gen_kill_set): Fix previous patch.
23709
23710 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23711
23712         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23713
23714 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23715
23716         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23717         ldsfld and ldsflda.
23718
23719         * inssel-sparc.brg: Add more optimizations.
23720
23721         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23722
23723 2004-04-01  Martin Baulig  <martin@ximian.com>
23724
23725         * mini.c (handle_box): New static function; moved the
23726         implementation of CEE_BOX here.
23727         (mono_method_to_ir): Added `constrained_call' variable.
23728         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23729         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23730         mono_method_get_constrained() to get the method.
23731
23732 2004-04-01  Martin Baulig  <martin@ximian.com>
23733
23734         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23735         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23736         (mono_method_to_ir): We don't need these macros anymore since
23737         mono_class_get_full() already takes care of it. 
23738
23739 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23740
23741         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23742         use @function (as doesn't accept #function here) and check the return
23743         value of system and stop if fails.
23744
23745 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23746
23747         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23748
23749 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23750
23751         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23752
23753         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23754
23755         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23756         #56223.
23757
23758         * basic-long.cs: Add test for negation of Int64.MinValue.
23759
23760 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23761
23762         * mini-sparc.c: Update status.
23763
23764         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23765
23766         * exceptions-sparc.c: Fix return value in filters.
23767
23768         * inssel-sparc.brg: Fix register allocation in some rules.
23769
23770 2004-03-28  Martin Baulig  <martin@ximian.com>
23771
23772         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23773         if neccessary.  
23774
23775 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23778         
23779         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23780         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23781         remove unused conv_u4 opcode.
23782
23783         * mini-x86.c: Remove valgrind workaround since it slows down things
23784         even when mono is not run under valgrind.
23785
23786 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23787
23788         * mini-sparc.c: Update status.
23789
23790         * inssel-sparc.brg: Add some optimizations.
23791
23792         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23793         future delay slot filling. Add support for varargs, tail calls and JMP.
23794
23795         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23796         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23797
23798         * inssel.brg: Fix register allocation in OP_ARGLIST.
23799
23800         * inssel.brg: Fix warnings.
23801
23802 2004-03-25  Martin Baulig  <martin@ximian.com>
23803
23804         * mini.c (inflate_generic_field): Removed.
23805         (mini_get_method): Removed, use mono_get_method_full(),
23806         (mini_get_class): Removed, use mono_class_get_full().
23807         (mono_method_to_ir): Pass our generic context to
23808         mono_field_from_token().        
23809
23810 2004-03-25  Martin Baulig  <martin@ximian.com>
23811
23812         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23813         of a `MonoMethod *'.
23814         (mini_get_method): Take a `MonoGenericContext *' instead
23815         of a `MonoMethod *'.
23816         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23817         a new local variable called `generic_context' which holds the
23818         current `MonoGenericContext *'; use it to lookup things.
23819
23820 2004-03-24  Martin Baulig  <martin@ximian.com>
23821
23822         * mini.c (mini_get_class): New static method; if we're inside a
23823         generic instance, inflate the class if neccessary.
23824         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23825
23826 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23827
23828         * iltests.il: New regression test for #55976.
23829
23830         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23831         #55976.
23832
23833 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23836         output.
23837
23838 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23839
23840         * liveness.c: Consider SSA stores as well as loads when making vars
23841         volatile.
23842
23843         * exceptions.cs: New regression tests for register allocation.
23844         
23845 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23846
23847         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23848         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23849           domain lock only to protect puntual access to data structures.
23850           Added access lock for sighash, jit_icall_hash_name, 
23851           jit_icall_hash_addr and domain->code_mp.
23852
23853 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23854
23855         * driver.c: Print SIGSEGV handling method.
23856
23857         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23858
23859         * mini.c (setup_jit_tls_data): Handle case when this is called
23860         multiple times for a thread.
23861
23862         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23863         is different from fbxx_un. Fixes #54303. Also use constants instead of
23864         magic numbers in a lot of places.
23865
23866 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23867
23868         * exceptions.cs: Fix cctor test when --regression is used.
23869
23870 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23871
23872         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23873         for Linux/ppc.
23874
23875 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23876
23877         * inssel-ppc.brg: fixed register assignments for some rules.
23878
23879 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23880
23881         * exceptions.cs: Add test for exceptions in static constructors.
23882
23883         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23884         static constructors outside the domain lock. Fixes #55720.
23885
23886 2004-03-17  Martin Baulig  <martin@ximian.com>
23887
23888         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23889         (inflate_generic_field): Take the `MonoMethod *' instead of the
23890         `MonoClass *' and added support for generic method.
23891         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23892         have a `field->parent->gen_params', only inflate the field if it's
23893         an open constructed type.
23894
23895 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23898         exception object instead of the preconstructed ones.
23899
23900 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23901
23902         * mini.c: reverted changed to sigsegv_signal_handler commited
23903         accidentally in the previous patch.
23904
23905 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23906
23907         * mini.c:
23908         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23909         running --aot with an old assembly.
23910
23911 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23912
23913         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23914         point values.
23915
23916         * mini-sparc.c: Add support for v9 branches with prediction.
23917
23918 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23919
23920         * mini.c (mini_init): #warning is GNUC only
23921
23922         * mini-sparc.h: implement __builtin_frame_address
23923         and __builtin_return_address for Sun C compiler
23924
23925 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23926
23927         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23928
23929 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * basic-calls.cs: Add test for unaligned byref long argument passing.
23932
23933         * mini-ops.h: Add sparcv9 compare and branch instructions.
23934
23935         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23936         v9 instructions if we have a v9 cpu.
23937
23938         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23939         registers for global allocation.
23940
23941         * exceptions-sparc.c: Fixes.
23942         
23943 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23944
23945         * liveness.c (mono_analyze_liveness): Optimized version.
23946
23947         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23948
23949         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23950         sparc work.
23951
23952         * basic-float.cs basic-calls.cs: New regression tests.
23953
23954 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23955
23956         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23957         sigaltstack implementation.
23958
23959         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23960         
23961         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23962         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23963
23964 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * mini.c: Fix warnings.
23967         
23968         * mini.c (mono_resolve_patch_target): New function which contains the
23969         arch independent part of the patching process.
23970
23971         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23972         patching code to a separate function.
23973
23974 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23975
23976         * mini.c (add_signal_handler): ifdef out on Windows
23977
23978 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23979
23980         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23981         cpu-sparc.md: Add exception handling support + other fixes.
23982
23983         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23984         typed GC detection in --version.
23985
23986         * basic.cs exceptions.cs: New regression tests.
23987
23988         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23989         the arch specific code can store data during a compilation.
23990
23991         * mini-ops.h: Add OP_SETFRET.
23992
23993         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23994         function, register a separate icall for each arity, so the icalls can
23995         get a wrapper.
23996         
23997         * mini.c (mono_print_tree): Print negative offsets in a more readable
23998         form.
23999         
24000         * mini.c: Make signal handling work on sparc.
24001         
24002         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24003
24004         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24005
24006         * jit-icalls.c: Emulate truncl by aintl on solaris.
24007
24008         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24009
24010 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24011
24012         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24013
24014 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24015
24016         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24017         a MarshalByRef type, inline a method that performs the check, taking into
24018         account that the object can be a proxy. Also implemented tow new opcodes:
24019         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24020         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24021         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24022
24023 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24024
24025         * mini-ppc.c: if a relative branch displacement is too big
24026         but it points to and area reachable with an absolute branch, 
24027         avoid the thunks.
24028
24029 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24030
24031         * mini.c: optimize small copies in cpblk.
24032
24033 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24034
24035         * basic-calls.cs basic-float.cs: New regression tests.
24036
24037         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24038         negative offsets from %fp. Implement localloc. Fix local register 
24039         allocation. Fix the case when the this argument needs to be saved to
24040         the stack. Implement some missing opcodes.
24041
24042 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * mini.c (mini_method_compile): Reenable global regalloc in methods
24045         with exception handlers.
24046
24047         * linear-scan.c (mono_varlist_sort): Fix warning.
24048
24049         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24050
24051         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24052         regalloc costs.
24053
24054         * liveness.c: Make all variables uses in exception clauses volatile, to
24055         prevent them from being allocated to registers. Fixes #42136.
24056
24057 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24058
24059         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24060         causes regressions.
24061
24062         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24063         argument to mono_arch_regalloc_cost.
24064
24065         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24066         precisely.
24067
24068 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24069
24070         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24071         Make the cost of allocating a variable to a register arch dependent.
24072
24073         * basic-calls.cs: Fix compilation of tests.
24074         
24075         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24076         helper function to cut back on the number of #ifdefs needed.
24077
24078         * mini-ppc.c: Fix compilation.
24079
24080         * basic-calls.cs: New regression tests.
24081
24082         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24083
24084         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24085         of l0 since that is callee saved.
24086
24087         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24088         to virtual calls.
24089
24090         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24091         of delay instruction.
24092
24093         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24094
24095         * mini.h (MonoCallInst): Add 'virtual' flag.
24096
24097         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24098
24099 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * *.cs: New regression tests.
24102
24103         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24104         work.
24105
24106         * mini.c (mono_runtime_install_handlers): Fix build.
24107
24108         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24109         'signal_stack_size' members.
24110
24111         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24112         alternate signal stack.
24113
24114         * exceptions-x86.c: Add stack overflow handling.
24115
24116         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24117         functions to arch independent code.
24118
24119         * mini.c (mono_print_tree): Print more detailed info for load_membase
24120         opcodes.
24121         
24122 2004-02-23  Martin Baulig  <martin@ximian.com>
24123
24124         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24125
24126 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24127
24128         * mini-x86.c: fixed reg allocation for div/rem.
24129
24130 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24131
24132         * driver.c (mono_main): Report some configuratio options on --version.
24133
24134 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24135
24136         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24137         low in the address space. Correctly flush memory in thunks where we
24138         output native code.
24139
24140 2004-02-20  Martin Baulig  <martin@ximian.com>
24141
24142         * mini.c (mini_get_method): New static method; inflate all generic
24143         methods and methods in open generic instances.
24144         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24145         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24146
24147 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24148
24149         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24150
24151         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24152
24153 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24154
24155         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24156
24157         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24158         it compile using Sun's compiler.
24159
24160 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24161
24162         * 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.
24163
24164         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24165
24166 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24167
24168         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24169         code.
24170         * mini-ppc.c: handle calls outside of the allowed range with thunks
24171         allocated using the code manager.
24172         * tramp-ppc.c: use the code manager to hold generated native code.
24173         Fixed the magic trampoline to just patch vtable entries.
24174
24175 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24176
24177         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24178         independent file.
24179
24180 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24183         PPC.
24184
24185         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24186         if we have a working __thread implementation.
24187
24188         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24189         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24190
24191 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * mini-x86.c: Fix compilation under gcc 2.
24194         
24195 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24196
24197         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24198         contains a call to the wrapped function.
24199
24200         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24201         OP_<CALL>_IMM opcodes, and use them under X86.
24202         
24203         * mini.c (mono_jit_find_compiled_method): Fix warning.
24204
24205         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24206
24207         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24208
24209         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24210         functionality to mini.c.
24211
24212         * mini.c (mono_create_jump_trampoline): New function to create a jump
24213         trampoline. Return a compiled method instead of a trampoline if it
24214         exists. Add a cache for jump trampolines.
24215
24216         * mini.c (mono_jit_find_compiled_method): New function to return a
24217         compiled method if it exists.
24218
24219         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24220         mono_arch_create_jit_trampoline.
24221
24222         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24223         a jump trampoline. Fixes #52092.
24224         
24225 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24226
24227         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24228         which is not up-to-date. Add check_corlib_version () instead.
24229
24230         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24231         have to call it.
24232         
24233         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24234         since newer valgrind versions do not need it.
24235
24236         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24237         compile a method with a given set of optimizations.
24238
24239         * mini.c: Compile icall wrappers on-demand instead of at startup.
24240
24241         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24242         wrapper for an icall.
24243
24244 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24245
24246         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24247         #54063.
24248
24249         * iltests.il: Add test for non-empty stack before switch instruction.
24250
24251 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * mini.c: Add support for new stringbuilder marshalling conventions.
24254
24255         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24256
24257 2004-02-01  Martin Baulig  <martin@ximian.com>
24258
24259         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24260         in `ginst->mtype_argv'.
24261
24262 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24263
24264         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24265         facilitate grepping.
24266
24267 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24268
24269         * mini.c: fixed buglet in initobj generic implementation for references.
24270
24271 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24272
24273         * Makefile.am: make the version script conditional.
24274         * jit-icalls.c: handle missing truncl().
24275
24276 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24277
24278         * exceptions.cs: Add more tests for double->int conversion.
24279
24280         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24281         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24282
24283 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24284
24285         * driver.c: make --verbose --version emit an error
24286         if the loaded corlib doesn't match the runtime version.
24287
24288 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24289
24290         * mini-ppc.h: export ppc_patch().
24291         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24292         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24293         on par or better than on MacOSX.
24294
24295 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24296
24297         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24298         mono_lookup_pinvoke_call.
24299
24300         * mini-x86.c: Under windows, the default pinvoke calling convention is
24301         stdcall. Fixes #52834.
24302
24303         * mini.c (optimize_branches): Add an upper bound to the number of
24304         iterations to prevent infinite loops on strange loops. Fixes #53003.
24305
24306 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24307
24308         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24309         and ISINST. Fixes #52093.
24310
24311         * objects.cs (test_0_vector_array_cast): New tests.
24312         
24313 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24316         checking in Array.Set ().
24317
24318         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24319         #52590.
24320
24321         * object.cs (test_0_multi_array_cast): New regression test.
24322
24323 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24324
24325         * exceptions-ppc.c: fix build on Linux/PPC.
24326
24327 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24328
24329         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24330         running under valgrind.
24331         (x86_magic_trampoline): Fix build bustage.
24332
24333         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24334         negative values as well. This is needed for the encoding of the line number
24335         info, since sometimes the line numbers are not in increasing order.
24336
24337 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24338
24339         * cpu-pentium.md (localloc): Increase the size of the localloc 
24340         instruction since it is a loop under Win32.
24341
24342         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24343         allocation.
24344
24345 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24348         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24349         Max Horn (max@quendi.de). Fix file names in comments.
24350
24351 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24352
24353         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24354         avoid stack overflow.
24355         (replace_usage): Avoid uninitialized variable warnings.
24356
24357         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24358         and taking the address of valuetype variables.
24359
24360 2004-01-03  Patrik Torstensson
24361
24362         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24363         for other purposes than FP later on.
24364
24365 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24366
24367         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24368         of tail calls.
24369
24370 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24371
24372         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24373
24374 2003-12-30  Patrik Torstensson <p@rxc.se>
24375
24376         * mini-x86.h: Decreased number of availiable fp regs.
24377         Solves corner cases with FP spilling.
24378
24379 2003-12-23  Patrik Torstensson <p@rxc.se>
24380
24381         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24382         for floating point stack tracking / spilling on x86. 
24383         Fixes bug #49012.
24384         
24385         * basic-float.cs: added float mul overflow test.
24386
24387 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24388
24389         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24390
24391 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24392
24393         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24394         supports for cond branches that overflow the immediate
24395         overflow offset. mcs can compile simple programs.
24396
24397 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * exceptions-ppc.c: exception handling support wip:
24400         finally handlers get run on exception.
24401
24402 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24403
24404         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24405         profiling.
24406
24407 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24408
24409         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24410         initial support for stack walking and unwinding.
24411
24412 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24413
24414         * driver.c (mono_main): Make corlib-out-of-sync message more 
24415         descriptive. Also remove verify_corlib call.
24416
24417 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24418
24419         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24420         not overlap with other call's arguments, too.
24421
24422 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24423
24424         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24425         move to arch-specific code the choice of arch-specific
24426         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24427         * mini.c: ensure emulation calls will not interleave
24428         with other calls.
24429
24430 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24431
24432         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24433         the magic trampoline stack frame is dropped before executing
24434         the new method.
24435
24436 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24437
24438         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24439         and integer to fp conversions. Added support for overflowing
24440         arguments on the stack. Reserve a couple more registers as temps.
24441         Added support for aot compilation (as output still needs to be
24442         tweaked, though).
24443
24444 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24445
24446         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24447         Don't overwrite return register in some corner cases.
24448
24449 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24450
24451         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24452         static constructors when AOT compiling.
24453
24454         * driver.c (mono_main): Call mono_check_corlib_version.
24455
24456 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24457
24458         * cpu-g4.md, basic.cs: fixed div target register.
24459
24460 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24461
24462         * mini-ppc.c, basic.cs: shl_imm fix with test.
24463
24464 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24465
24466         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24467         structures by value. Misc fixes.
24468         * objects.cs: more tests.
24469
24470 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24471
24472         * mini-ppc.c: lconv.ovf.i implemented.
24473
24474 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24475
24476         * mini.c:
24477         (mini_init): don't error out if someone already called g_thread_init.
24478
24479 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24480
24481         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24482         to be any type per the spec. Fix abnormal memory usage when
24483         the same object is repeatedly thrown.
24484
24485 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24486
24487         * mini.c: check for overruns in IL code.
24488
24489 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24490
24491         * TODO: Add/remove some todo entries.
24492
24493 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24494
24495         * driver.c (mono_main): Call mono_verify_corlib.
24496
24497 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24498
24499         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24500         This has been moved to mini.c
24501         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24502         type being casted is marshalbyref it could be a proxy, so instead of
24503         emitting the type check code, emit a call to a runtime method that will
24504         perform the check by calling CanCastTo if needed.
24505
24506 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24507
24508         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24509         methods with large stack frames under Win32.
24510
24511 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24512
24513         * Makefile.am: Distribute regression tests.
24514
24515         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24516         at the end instead of inserting each variable into the sorted list.
24517
24518         * linear-scan.c (mono_varlist_sort): New helper function.
24519         
24520 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * mini.c: ensure arguments and locals are within bounds.
24523
24524 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24525
24526         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24527         related fixes.
24528
24529 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24530
24531         * mini.c (mono_cprop_copy_values): Fix crash.
24532
24533         * aot.c: Set verbosity back to 0.
24534         
24535 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24536
24537         * regalloc.c: complete memory leak fix by Laurent Morichetti
24538         (l_m@pacbell.net).
24539
24540 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24541
24542         * driver.c (main_thread_handler): Revert the previous patch.
24543
24544         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24545         under valgrind.
24546
24547         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24548         memory from the memory pool.
24549
24550         * driver.c (main_thread_handler): Turn on all optimizations when
24551         --aot is used.
24552
24553         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24554         an array for better performance.
24555
24556         * regalloc.c (mono_regstate_assign): Fix memory leak.
24557
24558         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24559         serialize the debug info.
24560
24561         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24562         debug info from the serialized representation.
24563
24564         * aot.c: Save debug info into the generated file and load it when 
24565         loading a method.
24566
24567         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24568
24569 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24570
24571         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24572         More FP-related fixes.
24573
24574 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24575
24576         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24577         and register allocation buglet. Hello world now runs.
24578
24579 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24580
24581         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24582         * tramp-ppc.c: fixed class init trampoline.
24583         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24584
24585 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24586
24587         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24588         mini.c: more ppc changes/fixes.
24589
24590 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24591
24592         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24593         Also optimize the case when the arguments are the same in the caller 
24594         and in the callee.
24595
24596         * iltests.il: Add tests for tail calls with valuetype arguments.
24597
24598 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24599
24600         * mini-ppc.c: fixes for struct return type.
24601
24602 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24603
24604         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24605         mono_spillvar_offset() to arch-specific code.
24606
24607 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24608
24609         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24610
24611 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24612
24613         * exceptions-x86.c: Fix stack space leaks.
24614         
24615         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24616         registers from the lmf if the method has save_lmf set.
24617
24618 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24619
24620         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24621         of icall wrappers into InvokeInDomain, since these are now per-domain.
24622
24623 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24624
24625         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24626         make some opcode emulation and intrinsic ops enabled/disabled 
24627         according to the architecture. More fixes.
24628
24629 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24630
24631         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24632
24633 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24634
24635         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24636         arch-specific handling for 'this' and struct return type to
24637         arch-specific code.
24638
24639 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24640
24641         * aot.c: prevent divide by zero error when reporting (it happened with
24642         Accessibility.dll).
24643
24644 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24645
24646         * mini.h (inst_switch): Remove unused macro.
24647
24648 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24649
24650         * aot.c:
24651         (load_aot_module): free 'info->methods' and 'info' properly. No more
24652         "free(): invalid pointer blah" messages when you have an old aot
24653         compiled assembly.
24654
24655 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24656
24657         * jit-icalls.c, mini.c: Added support for context static fields.
24658
24659 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * mini.c (mono_method_blittable): Methods which set LastError are not 
24662         blittable either. Fixes #51108.
24663         
24664 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24665
24666         * mini.c: flush icache.
24667         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24668
24669 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24672
24673 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24674
24675         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24676         safe on IA32.
24677
24678         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24679         vararg calls.
24680
24681         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24682
24683 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24684
24685         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24686         instruction when the result is discarded.
24687
24688         * iltests.il (test_0_div_regalloc): New regression test.
24689
24690         * arrays.cs: Fix compilation error.
24691
24692 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24693
24694         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24695         float rules to inssel-x86.brg: sane architectures with FP registers
24696         don't need to implement these rules.
24697
24698 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24699
24700         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24701
24702 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24703
24704         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24705         implementation of 32 bit systems.
24706
24707 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24708
24709         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24710         (Jeroen Zwartepoorte).
24711
24712 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24713
24714         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24715         the caller and the callee matches.
24716         
24717         * mini.c (mono_method_to_ir): Add comment.
24718
24719         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24720         signbit is missing on some platforms.
24721
24722 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24723
24724         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24725
24726         * mini.c (setup_jit_tls_data): Call the new function.
24727         
24728         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24729
24730         * mini-x86.c: Add experimental support for fast access to the lmf
24731         structure under NPTL/Linux 2.6.x.
24732
24733 2003-11-06  Martin Baulig  <martin@ximian.com>
24734
24735         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24736         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24737         the debugger.
24738
24739 2003-11-02  Martin Baulig  <martin@ximian.com>
24740
24741         * mini.c (inflate_generic_field): New static method.
24742         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24743         generic instance and the field is declared in a generic type, call
24744         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24745
24746 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * mini.h mini.c (mono_method_same_domain): New function to return
24749         whenever the caller and the callee are in the same domain.
24750
24751         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24752
24753 2003-10-30  Martin Baulig  <martin@ximian.com>
24754
24755         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24756         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24757         method parameters.
24758         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24759         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24760
24761 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24762
24763         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24764         propagation.
24765
24766         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24767         object here, so it is in the correct appdomain etc.
24768
24769 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24770
24771         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24772         already done.
24773         (mono_method_to_ir): Avoid freeing the type created returned from
24774         mono_type_create_from_typespec, since it is put into an internal cache
24775         by the function. Fixes pointer.exe.
24776
24777         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24778         trampolines for icalls and pinvokes as well. Fixes #33569.
24779
24780 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24781
24782         * mini.c: Update after appdomain changes.
24783
24784         * mini.c (mono_jit_compile_method_inner): Allways compile native
24785         method wrappers in the root domain, since there can only be one
24786         instance of them, whose address is stored in method->info.
24787
24788 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24789
24790         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24791         environment variable. Instead detect automatically whenever running
24792         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24793         valgrind.h.
24794
24795 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24796
24797         * trace.c, trace.h: New files that implement the new trace option
24798         parsing. 
24799
24800         * driver.c: Document new --trace options.
24801
24802         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24803         mini-x86.c: Apply:
24804
24805         -       if (mono_jit_trace_calls)
24806         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24807
24808         * mini.h: prototypes.
24809         
24810 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24811
24812         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24813
24814         * mini.c inssel.brg: Implement typedefbyref opcodes.
24815
24816         * mini.c (mono_jit_compile_method): Remove unused local variable.
24817
24818         * mini.c (mono_jit_compile_method_inner): Ditto.
24819         
24820 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24821
24822         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24823         
24824         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24825
24826 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24827
24828         * mini.c (mono_no_aot): Remove unused global variable.
24829
24830         * mini.c: Thread safety fixes.
24831
24832 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24833
24834         * mini.c (mono_create_class_init_trampoline): Add a lock around
24835         class_init_hash_addr.
24836
24837         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24838         #30073.
24839
24840         * mini.c: Decompose the NEWARR instruction before decomposing its
24841         arguments. Fixes #30073.
24842
24843 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24844
24845         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24846         convention.
24847
24848 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24849
24850         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24851
24852         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24853
24854         * driver.c: Add support for compiling icall wrappers to --compile.
24855
24856 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * inssel.brg: The empty value in class->interface_offsets is -1, not
24859         0. Fixes #49287.
24860
24861 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24862
24863         * objects.cs: New test for 'is' operator on an array of interfaces.
24864
24865 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24866
24867         * tramp-ppc.c: update trampoline code to support jumps
24868         and class initialization.
24869
24870 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24871
24872         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24873
24874         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24875
24876         * inssel.brg (OP_UNBOX): Remove unused rule.
24877
24878         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24879         region instead of one for each method. Fixes #47813.
24880
24881 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24882
24883         * exceptions.cs (test_0_nested_finally): New regression test for
24884         nested exception handlers.
24885
24886         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24887
24888         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24889
24890         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24891         inlining.
24892
24893         * mini.c (mono_method_check_inlining): Make the inlining limit 
24894         configurable by an environment variable.
24895         
24896         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24897
24898         * mini.h: Bump AOT file version.
24899
24900         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24901         token, store the image along with the token, since the token might not 
24902         refer to the same image as the method containing the relocation, 
24903         because of inlining.
24904
24905 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24906
24907         * mini.c (mono_precompile_assemblies): New function to compile
24908         all methods in all loaded assemblies.
24909
24910         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24911
24912         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24913         iassign and fassign to int*, since they can contain large negative
24914         values if the register is spilled. Also added some comments. Fixes
24915         #45817.
24916
24917         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24918         under Win32. Fixes #42964.
24919
24920 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24921
24922         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24923
24924         * aot.c: Added support for AOT compiling methods which contain calls
24925         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24926         handled.
24927         
24928         * driver.c (compile_all_methods): Run the compilation in a thread
24929         managed by mono. Fixes #44023.
24930
24931         * mini.c (mono_codegen): Print full method name in verbose output.
24932
24933         * mini-x86.c (mono_arch_patch_code): Fix warning.
24934         
24935         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24936         jumps, since the method we are jumping to might be domain-specific.
24937
24938         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24939
24940 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24941
24942         * inssel.brg: string chars are unsigned.
24943
24944 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24945
24946         * TODO: New todo item.
24947
24948         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24949         which calls mono_runtime_class_init and patches the call site to
24950         avoid further calls.
24951         (mono_arch_create_class_init_trampoline): New arch specific function 
24952         to create a class init trampoline.
24953         (create_trampoline_code): Generalized so it can create
24954         class init trampolines as well.
24955
24956         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24957         (mono_create_class_init_trampoline): New function to create and cache
24958         class init trampolines.
24959         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24960         vtable given the address of a class init trampoline. Used by the
24961         patching process.
24962         (mono_codegen): Generate a call to a trampoline instead of
24963         mono_runtime_class_init in LDSFLD[A].
24964         (mono_codegen): Add relocations for the new trampoline.
24965         
24966         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24967         MONO_PATCH_INFO_CLASS_INIT.
24968
24969         * mini.h: Bump AOT version number.
24970
24971         * aot.c: Create a copy of the loaded code instead of using the original
24972         so methods which call each other will be close in memory, improving
24973         cache behaviour.
24974         
24975         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24976         patch since it breaks the regression tests.
24977         
24978         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24979         for the register saving instruction sequence since the 
24980         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24981
24982 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24983
24984         * TODO: Fix todo item && remove another.
24985
24986 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24987
24988         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24989         previous checkin.
24990
24991         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24992         function of the module.
24993
24994         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24995         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24996         --no-aot command line option.
24997
24998 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24999
25000         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25001         by Bernie Solomon (bernard@ugsolutions.com).
25002
25003         * inssel.brg: Refactor the interface offset table related code into
25004         its separate functions and add support for the AOT case.
25005
25006 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25007
25008         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25009         
25010         * aot.c: Added mono_aot_verbose variable and made all debugging
25011         output depend on the value of this variable.
25012
25013         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25014         method_label and info_label.
25015
25016         * mini.h mini-x86.c aot.c: Added a new relocation type 
25017         MONO_PATCH_INFO_IID for klass->interface_id.
25018
25019         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25020         the MonoJitInfo structure.
25021
25022         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25023         a non-root appdomain in shared mode.
25024
25025 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25026
25027         * aot.c: make aot loader less verbose. Remove free of unused variable.
25028
25029 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25030
25031         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25032
25033         * .cvsignore: Added *.dll.
25034
25035         * mini.c (mono_print_tree_nl): New function callable while debugging.
25036
25037         * mini.c (mono_print_code): Export this.
25038
25039         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25040         patched code.
25041
25042 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25043
25044         * mini.h (MonoCompile): Added 'jit_info' field.
25045
25046         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25047         the cfg structure, since it is needed by the AOT compiler.
25048
25049         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25050
25051         * aot.c: A major rewrite. Changes include:
25052         - save exception tables for methods which have them.
25053         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25054         to g_module_symbol.
25055         - reworked the file format so it is now much smaller and needs
25056         fewer relocation entries.
25057         
25058 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25059
25060         * aot.c (load_aot_module): Fix build bustage on platforms without
25061         Boehm GC.
25062
25063 2003-09-04  Martin Baulig  <martin@ximian.com>
25064
25065         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25066
25067 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25068
25069         * TODO: Some new optimization ideas.
25070
25071         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25072
25073         * aot.c: Save the optimization flags used to compile the code into
25074         the AOT module.
25075
25076         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25077         support emitting domain specific code.
25078         
25079         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25080         no longer domain neutral. It can be made domain neutral by compiling 
25081         with --optimize=shared.
25082
25083         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25084         between appdomains.
25085
25086         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25087         loading of AOT code.
25088
25089         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25090         
25091         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25092         if there is no domain neutrality information.
25093
25094 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25095
25096         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25097         format version into the generated library.
25098
25099         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25100         callee method into the caller since one of them could be shared.
25101
25102         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25103         system exceptions from AOT code now works.
25104
25105         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25106         method if it is domain neutral and the callee is not.
25107
25108         * graph.c (cfg_emit_one_loop_level): Fix warning.
25109
25110 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25111
25112         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25113         last checkin.
25114
25115 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25116
25117         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25118         is needed  by code which is executed before mono_runtime_init ().
25119         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25120         
25121         * mini.c (mono_thread_abort): Fix warning.
25122         (mono_jit_compile_method): Call static constructor in the AOT case too.
25123
25124         * aot.c (mono_compile_assembly): Fix warning.
25125
25126 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25127
25128         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25129
25130 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25131
25132         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25133
25134         * cpu-pentium.md: Fix the length of call opcodes so they include the
25135         ESP restoring instruction. Fixes #47968.
25136
25137 2003-08-28  Martin Baulig  <martin@ximian.com>
25138
25139         * mini-x86.c (mono_arch_call_opcode): Added support for
25140         MONO_TYPE_GENERICINST.
25141
25142         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25143
25144 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25145
25146         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25147         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25148
25149         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25150         metadata_section.
25151
25152 2003-08-26  Martin Baulig  <martin@ximian.com>
25153
25154         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25155         when reporting an error, set this to the actual error location.
25156         (mono_method_to_ir): Report the correct error location if
25157         get_basic_blocks() returned an error.
25158
25159 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25160
25161         * mini.c (mono_type_blittable): OBJECT is not blittable.
25162         (mono_method_blittable): Methods which have marshalling descriptors
25163         are not blittable either. Fixes #47842.
25164
25165 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25166
25167         * driver.c mini.c: Use an environment variable instead of a global 
25168         variable. Also fix the build.
25169
25170         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25171         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25172         reporting this. 
25173
25174         * driver.c mini.c: Added --with-valgrind option to turn off some
25175         code which prevents mono from running under valgrind.
25176
25177         * mini.c (mono_emit_call_args): Fixed warning.
25178
25179         * mini.c (mono_emulate_opcode): Fixed warning.
25180
25181 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25184         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25185         regalloc.c, regalloc.h: specify available registers in arch-specific
25186         code and support floats in the regallocator (patch by Laurent Morichetti 
25187         <l_m@pacbell.net>)
25188
25189 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * mini.c: mono_thread_current() can be called only after
25192         mono_runtime_init(): rearrange code to not call it early on.
25193
25194 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25195
25196         * mini.c: allocate jump tables in the code mempools.
25197
25198 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25199
25200         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25201         freed.
25202
25203 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25204
25205         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25206         12 to 16.  This fixes bug #47453.
25207
25208
25209 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25210
25211         * mini-ppc.c: fixed indexed load and unsigned compares.
25212
25213 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25214
25215         * mini.c: reenabled installation of handler for
25216           thread abort signal.
25217
25218 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25219
25220         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25221         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25222         until it's fixed and actually useful.
25223
25224 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25225
25226         * inssel-long32.brg: couple more opcodes implemented.
25227
25228 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25229         
25230         * mini-sparc.c: Even more opcodes implemeted.
25231
25232 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25233
25234         * mini-sparc.c: More opcodes implemented.
25235
25236 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25237
25238         * mini-sparc.c: More opcodes implemented.
25239
25240 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25241
25242         * inssel-sparc.brg: Add some needed rules.  Direct
25243         copy from PPC.
25244         * Makefile.am: Use inssel-sparc.brg
25245         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25246         an assert happy for now.
25247
25248 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25249
25250         * mini-sparc.c: Fixed compile errors.
25251         * exceptions-sparc.c: Same.  We now produce a mono binary 
25252         on sparc-linux.  Yea.
25253
25254 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25255
25256         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25257         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25258         They compile, but do not work.
25259
25260 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25261
25262         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25263         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25264         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25265         (ct@gentoo.org).
25266
25267 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25268
25269         * mini.c: more opcodes implemented and better support for generics.
25270
25271 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25272
25273         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25274         * mini.c, mini.h: first cut at generics support: some new instructions 
25275         added and changed the behaviour of some of the existing ones.
25276
25277 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25278
25279         * mini.c: Removed definition of metadata_shared mutex here.
25280
25281 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25282
25283         * mini-x86.c: make vararg calls work for instance methods.
25284
25285 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25286
25287         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25288         returns the arguments in a separte list, now.
25289
25290 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25291
25292         * aot.c, mini.c: updates for array type representation changes.
25293
25294 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25295
25296         * mini.c: register function to perform jit shutdown.
25297
25298 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25299
25300         * mini.c: use a faster allocator if possible.
25301
25302 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25303
25304         * aot.c: some cleanups and portability changes.
25305
25306 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25307
25308         * mini.c: use faster allocation for CEE_BOX if possible.
25309
25310 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25311
25312         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25313         Moved inlined mempcy code to its own function so that is can be
25314         reused. Added an inline memset function as well (optimized initobj).
25315         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25316
25317 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25318
25319         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25320
25321 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25322
25323         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25324         arch code can setup the cpu for CLR execution, if needed.
25325         We use it on x86 to set the precision of FP operations.
25326
25327 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25328
25329         * mini.c: disable some optimizations if we can guess they'll cost too
25330         much for a given method.
25331
25332 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25333
25334         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25335         
25336 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25337         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25338         info collection support.
25339
25340 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25341
25342         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25343         is now implemented in the profiling API. Get rid of a couple of
25344         unnecessary global variables.
25345
25346 2003-06-15  Nick Drochak <ndrochak@gol.com>
25347
25348         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25349         * cpu-g4.md: add op_bigmul and op_bigmul_un
25350         * cpu_pentium.md: add op_bigmul_un
25351         * inssel-long32.brg: add rule for unsigned bigmul
25352         * mini-ops.h: define OP_BIGMUL_UN
25353         * mini-x86.c: THE BUG: handle (un)signed properly
25354         * mini.c: choose unsigned opcode if needed.
25355         This set of patches fixes bug #44291
25356
25357 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25358
25359         * mini.c (optimize_branches): improved to handle all kinds of
25360         conditional branches.
25361
25362 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25363
25364         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25365         don't raise exceptions.
25366
25367 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25368
25369         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25370         to arch-specific files.
25371
25372 2003-06-09  Martin Baulig  <martin@ximian.com>
25373
25374         * Makefile.am (libs): Added $(LIBGC_LIBS).
25375
25376 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25377
25378         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25379         and OP_ATAN (fixes bug#44293).
25380
25381 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * Makefile.am, mini-x86.c: rename cpu description array to
25384         pentium_desc, since some compilers define the 'pentium' preprocessor
25385         symbol.
25386
25387 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25388
25389         * mini.c (mini_select_instructions): add explicit branch if the
25390         following block is not the false target of a conditional branch -
25391         we need this with any optimization that reorder or remove bblocks
25392
25393         * mini.c (optimize_branches): bug fixes
25394
25395 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25396
25397         * mini.c (mono_method_to_ir): inline static readonly fields
25398
25399         * ssa.c (fold_tree): start cfold support for long (very simple
25400         cases only)
25401
25402         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25403
25404 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25405
25406         * inssel.brg: fixed memcpy (bug #44219).
25407
25408 2003-06-05  Dick Porter  <dick@ximian.com>
25409
25410         * driver.c: Set the glib log levels to not abort if g_message
25411         recurses.
25412
25413         g_set_prgname() has to happen before mini_init() so that the
25414         process handle gets the info.
25415         
25416 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25417
25418         * driver.c: add intrins to the default optimizations to get wider
25419         exposure.
25420
25421 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25422
25423         * mini.h: some large basic blocks will overflow a 16-bit
25424         integers for symbolic registers.
25425
25426 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25427
25428         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25429         (mono_arch_output_basic_block): fix bug 43499 
25430
25431 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25432
25433         * mini.c: kill duplicated definition of mono_debug_format.
25434
25435 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25436
25437         * mini-x86.c, arrays.cs: fixed register allocation bug.
25438
25439 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25440
25441         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25442
25443         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25444
25445 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25446
25447         * mini.c:
25448         (print_method_from_ip): also print source location information if
25449         available.
25450
25451 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25452
25453         * mini.c (mono_find_block_region): bug fix in region code
25454         (mini_method_compile): enable removing unreachable code again, but
25455         only in methods without exception clauses.
25456
25457 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25458
25459         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25460         Implemented arglist opcode and handling of TypedReference type.
25461         Fixed x86 call convention when a structure is returned.
25462         Minimal support for calling static vararg methods.
25463
25464 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25465
25466         * mini.c (mini_method_compile):  always remove unreachable code,
25467         because the code in them may be inconsistent  (access to dead
25468         variables for example).
25469
25470 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25471
25472         * driver.c, debug-mini.c: warning fixes.
25473
25474 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25477
25478 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25479
25480         * mini.c: thread-static fields are registered in mono_class_vtable(),
25481         so ensure the function is called before checking for them.
25482
25483 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25484
25485         * mini.c (optimize_branches): fix for bug 43586
25486
25487         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25488         overflow (fixes Bug #43639)
25489
25490 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25491
25492         * mini.c, objects.cs: allow the use of stobj for primitive types.
25493
25494 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25495
25496         * mini.c: be less strict about argument checking until we support
25497         running the verifier.
25498
25499 2003-05-27  Nick Drochak <ndrochak@gol.com>
25500
25501         * basic-long.cs: tests for (ulong)int * (ulong)int also
25502         * mini.c: use the same trick for (ulong)int * (ulong)int
25503
25504 2003-05-27  Nick Drochak <ndrochak@gol.com>
25505
25506         * basic-long.cs: add regression test for (long)int * (long)int
25507         * cpu-pentium.md: add op_bigmul specification
25508         * inssel-long32.brg: add OP_BIGMUL rule
25509         * mini-ops.h: add OP_BIGMUL
25510         * mini-x86.c: register allocator: handle case where src1 needs to be
25511         in EAX.
25512         * mini.c: substitute special BIGMUL opcode in the tree for 
25513         (long)int * (long)int
25514
25515 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25516
25517         * jit-icalls.c: call the type ctor on field access if needed.
25518
25519 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25520
25521         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25522         to a method (including results of ldelema, bug#43207).
25523
25524 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25525
25526         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25527         colors to show exception handler blocks.
25528
25529         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25530         (fix for pinvoke7.cs).
25531
25532 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25533
25534         * mini.h, mini.c: ensure correct initialization order for types that
25535         require it. Prepare for lazy compilation of jit icall wrappers.
25536         Provide a name for opcode emulation to reduce unneeded mallocing.
25537
25538 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25539
25540         * mini-x86.c: better register restoring code and profiling
25541         support for tail calls.
25542
25543 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25544
25545         * mini.h, driver.c: prepare for leaf methods optimization.
25546
25547 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25548
25549         * mini.c: get targets of branches before converting a method.
25550
25551 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25552
25553         * mini.c (optimize_branches): added some experimental code (disbaled) 
25554
25555 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25556
25557         * mini.c (optimize_branches): fix branch to branch optimization 
25558
25559         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25560
25561         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25562
25563         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25564
25565         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25566         if needed.
25567
25568 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25569
25570         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25571         enable use of interface variables again.
25572
25573         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25574         I1 to registers because there is no simply way to sign extend 8bit
25575         quantities in caller saved registers on x86.
25576
25577         * inssel-float.brg: set costs of some rules to 2 so
25578         that monobure always select the arch. specific ones if supplied,
25579         regardless of the order we pass the files to monoburg.
25580
25581 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25582
25583         * mini.c, mini-x86.c: since the magic trampoline for jumps
25584         can't patch the code directly, we do it as soon as the
25585         method gets compiled.
25586
25587 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25588
25589         * mini-x86.c, mini.h: introduce a new patching method
25590         to support CEE_JMP and tail calls.
25591         * mini.c: obey tail.call. Don't precompile methods target
25592         of CEE_JMP.
25593         * tramp-x86.c: new trampoline code to handle methods
25594         reached through a jump.
25595
25596 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25597
25598         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25599         bit values to registers
25600
25601 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * mini.c (mono_compile_get_interface_var): share interface
25604         variables if possible.
25605
25606 2003-05-16  Martin Baulig  <martin@ximian.com>
25607
25608         * debug-mini.c (mono_init_debugger): New function to initialize
25609         the debugger.  This is not in the debugger since it needs to
25610         access some of mini's internals.
25611
25612 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25613
25614         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25615
25616 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25617
25618         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25619         for value type handling.
25620
25621 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25622
25623         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25624         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25625
25626 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25627
25628         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25629           the constructor through a proxy.
25630
25631 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25632
25633         * jit-icalls.c, inssel.brg: fixes to array element address
25634         calculations.
25635
25636 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25637
25638         * mini-x86.c (is_regsize_var): allocate pointer to registers
25639
25640 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25641
25642         * driver.c: fixed typo, added intrins to the set of optimizations
25643         tested with regressions.
25644
25645 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25648         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25649         test case.
25650
25651 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25652
25653         * inssel.brg: remove some common pop instructions without side effects
25654
25655 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25656
25657         * inssel-x86.brg: fixed thinko in int to double conversions.
25658
25659 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25660
25661         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25662
25663 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25664
25665         * inssel-long32.brg: two more missing instructions.
25666
25667 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25668
25669         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25670         if not already set.
25671
25672 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25673
25674         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25675         correctly.
25676
25677         * basic-float.cs: Added tests for negative zero.
25678
25679 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25680
25681         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25682         a couple of missing operations for long casts, with test cases.
25683
25684 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25685
25686         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25687
25688 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25689
25690         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25691         code size estimation.
25692
25693 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25694
25695         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25696         abstract methods (fix bug 42542)
25697
25698         * aot.c: add ability to handle array types
25699         
25700 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25701
25702         * mini.c: Call the _specific versions of the object allocation
25703         functions if possible.
25704
25705 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25706
25707         * driver.c: call setlocale ().
25708
25709 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25710
25711         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25712         windows build.
25713
25714 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25715
25716         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25717
25718         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25719         wrappers (fix bug 42122)
25720
25721 2003-05-04  Martin Baulig  <martin@ximian.com>
25722
25723         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25724
25725         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25726         s/mini_set_defaults/mono_set_defaults/g.
25727
25728 2003-05-04  Martin Baulig  <martin@ximian.com>
25729
25730         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25731
25732 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25733
25734         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25735         (reported by Don Roberts).
25736
25737 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25738
25739         * mini.c: temporarily work around two bugs for this release.
25740
25741 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25742
25743         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25744         that contains -export-dynamic and it makes using the ld script
25745         useless.
25746         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25747
25748 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25751         specific cpu.
25752
25753 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25754
25755         * mini.c: make sure leave calls all the needed finally blocks,
25756         even when the target jumps out of multiple exception clauses.
25757
25758 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25759
25760         * ldscript, Makefile.am: add linker script to reduce the number of
25761         exported symbols (should also fix the issues with libwine defining
25762         some of the same symbols in io-layer).
25763
25764 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25765
25766         * driver.c (mini_main): Avoid assertion when no file name is given on 
25767         the command line.
25768
25769 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25770
25771         * driver.c: added --version/-V command line option.
25772         Added the inline optimization in the regression tests.
25773
25774 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25775
25776         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25777         to the type in the method signature (fixes bug#42134).
25778
25779 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25780
25781         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25782
25783 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25784
25785         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25786
25787 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25788
25789         * driver.c: fixed bug #42100.
25790
25791 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25792
25793         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25794
25795 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25796
25797         * mini.c: moved most of the code required to do inlining to its own
25798         function so it can be reused. Inline also ctors if appropriate.
25799
25800 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25801
25802         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25803         the runtime can call mono API functions.
25804
25805 2003-04-27  Martin Baulig  <martin@ximian.com>
25806
25807         * debug-mini.c (mono_debug_init_method): Added
25808         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25809         send a notification to the debugger.
25810
25811         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25812         running in the Mono Debugger, just pass the breakpoint number to
25813         mono_debug_init_method().
25814
25815         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25816
25817 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25818
25819         * mini.c: allow some more unsafe compares.
25820
25821 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25822
25823         * mini-x86.c, Makefile.am: make distcheck works (partially from
25824         a patch by Richard Lee <r.h.lee@attbi.com>).
25825         * regset.c, regset.h: removed, they are unused.
25826
25827 2003-04-25  Dick Porter  <dick@ximian.com>
25828
25829         * driver.c: Usage reports the name as 'mono' not 'mini'
25830         * exceptions-x86.c: Build and run on freebsd
25831
25832 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25833
25834         * Makefile.am: install the program with the 'mono' name and
25835         the library as libmono instead of mini and libmini.
25836
25837 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25838
25839         * driver.c: provide the APIs for the embedding interface of the old jit.
25840
25841 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25842
25843         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25844
25845 2003-04-23  Martin Baulig  <martin@ximian.com>
25846
25847         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25848
25849         * driver.c: Added `--debug' command line argument to enable
25850         debugging support.
25851
25852 2003-04-23  Martin Baulig  <martin@ximian.com>
25853
25854         * debug.[ch]: Removed.  The code is now in
25855         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25856
25857         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25858         last six months.
25859
25860 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25861
25862         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25863
25864 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25865
25866         * mini.c:
25867         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25868         mono_domain_finalize.
25869         (mini_method_compile): use mono_method_profile* if the the option is
25870         enabled.
25871
25872 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25873
25874         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25875         methods with their wrapper.
25876
25877         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25878         methods with their wrapper.
25879
25880         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25881         their wrapper.
25882
25883         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25884         wrapper.
25885
25886         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25887         methods.
25888
25889 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25890
25891         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25892
25893 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25894
25895         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25896         of the mempool. This is slightly faster and uses less memory
25897
25898 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25899
25900         * mini.c: avoid O(n) allocation for variables.
25901
25902 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25903
25904         * mini.c: handle items on the stack after inlining methods.
25905
25906 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25907
25908         * mini.c: make the method->opcode optimization dependent
25909         on MONO_OPT_INSTRINS and do it lazily.
25910
25911 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25912
25913         * driver.c: print overall results at the end of regression run.
25914
25915 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25916
25917         * inssel.brg: don't overwrite symbolic registers.
25918
25919 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25920
25921         * inssel-x86.brg: fix conversion from long to float.
25922
25923 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25924
25925         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25926
25927 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25928
25929         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25930
25931         * driver.c: Added --print-vtable option as in the old JIT.
25932
25933 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25934
25935         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25936
25937 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25938
25939         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25940
25941 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25942
25943         * mini.c regalloc.c regalloc.h: Fix memory leak.
25944
25945 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25946
25947         * aot.c (mono_aot_get_method): register all used strings
25948
25949 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25950
25951         * mini.c: always intern strings references with ldstr at compile time.
25952
25953 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25954
25955         * Makefile.am: add BUILT_SOURCES.
25956
25957 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25958
25959         * driver.c: give a better error message when the assembly to execute
25960         doesn't have an entry point.
25961
25962 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25963
25964         * Makefile.am: added hack for automake
25965
25966         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25967         correct sematics.
25968
25969         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25970
25971 22003-04-07  Martin Baulig  <martin@ximian.com>
25972
25973         * Makefile.am: Added Makefile.am.
25974
25975         * debugger-main.c: Removed, this is now in the debugger where it
25976         belongs.
25977
25978         * mini.pc.in: Call this package `mini' for the moment.
25979
25980
25981
25982
25983
25984
25985
25986
25987
25988
25989
25990
25991
25992
25993