2010-07-23 Marek Habersack <mhabersack@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-23  Marek Habersack  <mhabersack@novell.com>
2
3         * Makefile.am (version.h): generate version using GIT commit info,
4         removed the old svn and git-svn code.
5
6 2010-07-22  Jb Evain  <jbevain@novell.com>
7
8         * method-to-ir.c (BRANCH_COST): set to 10.
9
10 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
11
12         * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
13         code, it was missing a few 'break's.
14
15 2010-07-20  Zoltan Varga  <vargaz@gmail.com>
16
17         * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
18         Fixes #618176.
19
20 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
21
22         * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
23
24 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
25
26         * mini-llvm.c: Add more SIMD instructions.
27
28 2010-07-15  Miguel de Icaza  <miguel@novell.com>
29
30         * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
31
32 2010-07-15  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-ia64.c: Change the calling convention to pass this as first as on other
35         architectures. Remove some dead code from the get_vcall_slot() and the implementation
36         of the CALL_MEMBASE opcodes as a result.
37
38 2010-07-13  Miguel de Icaza  <miguel@novell.com>
39
40         * mini.c: LLVM is disabled by default on LLVM builds.  You can use
41         the MONO_ENV_OPTIONS to set the --llvm flag.
42
43 2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
44
45         * driver.c : windows build fix for --with-moonlight.
46
47 2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
48
49         * mini.c|h:
50         * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
51         that reach native code from a reverse pinvoke.
52
53 2010-07-11  Zoltan Varga  <vargaz@gmail.com>
54
55         * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
56
57         * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
58         a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
59         Fixes #620864.
60
61         * generics.cs: Add a test.
62
63 2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
64
65         * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
66         support a given runtime implemented method.
67
68 2010-07-10  Mark Probst  <mark.probst@gmail.com>
69
70         * mini-darwin.c: Register the exception thread with the GC.
71
72 2010-07-10  Zoltan Varga  <vargaz@gmail.com>
73
74         * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
75         mono branch.
76
77 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
78
79         * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
80         from constant memory.
81
82         * ir-emit.h: Clean up the _FAULT macros a bit.
83
84         * decompose.c: Mark some loads as constant.
85
86         * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
87
88 2010-07-09  Miguel de Icaza  <miguel@novell.com>
89
90         * driver.c (mini_usage): Change the name of the --sgen flag to be
91         --gc=sgen and also support --gc=boehm.   These flags can also be
92         set on MONO_ENV_OPTIONS to propagate this to children processes.
93
94         * main.c: Remove the MONO_VM_OPTIONS environment variable that
95         only supported "sgen" and "llvm" config options and instead parse
96         the MONO_ENV_OPTIONS as options that are parsed by the command
97         line parser.   Any command line option that Mono supports can be
98         passed in this environment variable.
99
100 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
101
102         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
103         LLVM.
104
105         * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
106         it can now eliminate more than just bounds checks.
107
108         * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
109         an extra 'fault' argument.
110
111         * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
112         later.
113
114         * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
115         decomposition.
116
117         * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
118         no longer generated when LLVM is used.
119
120         * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
121
122 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
123
124         * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
125
126 2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
127
128         * driver.c: Moonlight: Force line buffering for stdout.
129
130 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
131
132         * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
133         are only callable using invoke.
134
135 2010-07-09  Zoltan Varga  <vargaz@gmail.com>
136
137         * mini-llvm.c (process_bb): Use emit_load () in one more place.
138
139         * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
140         MONO_LLVM=xxx is actually usable.
141
142         * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
143         since LLVM might be able to hoist them out of loops.
144         (emit_store): Ditto.
145
146 2010-07-08  Neale Ferguson <neale@sinenomine.net>
147
148         * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
149         in typeload-unaligned test.
150
151 2010-07-08  Zoltan Varga  <vargaz@gmail.com>
152
153         * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
154
155         * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
156         mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
157         generic trampolines+rgctx fetch trampolines.
158
159 2010-07-08  Geoff Norton  <gnorton@novell.com>
160
161         * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
162
163 2010-07-07  Zoltan Varga  <vargaz@gmail.com>
164
165         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
166
167         * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
168         is not defined in the LLVM case to keep the imt arg alive.
169
170 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
171
172         * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
173         functions, now its 'llvm_<FOO>_trampoline'.
174
175         * method-to-ir.c (emit_imt_argument): Fix llvm support.
176
177         * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
178         cannot be passed in the same call.
179
180         * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
181         register to be the same as the RGCTX register, the two can't be used together on
182         the same call.
183
184 2010-07-05  Miguel de Icaza  <miguel@novell.com>
185
186         * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
187         that allows the user to force the VM to use llvm or sgen.
188
189 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
190
191         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
192         before processing the exception on PPC too.
193
194         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
195
196         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
197         'this' is always passed as the first argument, before the vtype ret arg. This
198         simplifies get_this_arg_reg () and LLVM integration.
199
200 2010-07-05  Martin Baulig  <martin@ximian.com>
201
202         * exceptions-x86.c (mono_arch_handle_exception): Port this to
203         Windows; apply my patch from r159782 in the mono-2-6 branch.
204
205 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
206
207         * Makefile.am: Don't build the debug assembler files if we're building without
208         debugger support.
209
210 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
211
212         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
213
214 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
215
216         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
217         length.
218
219         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
220         regs [ARMREG_FP] instead.
221
222         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
223
224         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
225         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
226
227         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
228
229         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
230
231         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
232
233         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
234         without IMT_REG defined (ARM).
235
236         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
237         the trampolines.
238
239 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
240
241         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
242
243 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
244
245         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
246         definitions to match their declarations and vice-versa.
247
248 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
249
250         * Makefile.am (common_sources): Add mini-llvm.h.
251
252         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
253
254 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
255
256         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
257         compiling.
258
259 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
260
261         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
262         implemt the option of loading the llvm backend from a module so
263         that we can have a single binary and the bloat from llvm is
264         only experienced when it is actually loaded.
265
266 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
267
268         * mini-llvm.c: remove direct access to mono_defaults.
269
270 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
271
272         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
273         a no-op.
274
275         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
276
277         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
278         is now mono_arch_nullify_class_init_trampoline ().
279         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
280         opcodes, they are no longer needed.
281
282         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
283         now mono_arch_nullify_class_init_trampoline ().
284         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
285         opcodes, they are no longer needed.
286
287         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
288         vtable on platforms which support it.
289
290         * driver.c: Print the full LLVM version we are compiled against in --version.
291
292         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
293         a bit better. Decode nesting information to fix eh support for llvm+aot.
294
295         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
296         methods.
297
298         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
299
300         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
301         is always passed as the first argument, before the vtype ret arg. This simplifies
302         get_this_arg_reg () and LLVM integration.
303
304 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
305
306         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
307         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
308         most of the vcall specific code to mono_vcall_trampoline () from
309         common_call_trampoline ().
310
311 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
312
313         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
314         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
315         if the callsite is patched.
316
317         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
318         the llvm branch.
319
320         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
321         the trampoline in the xdebug info.
322
323         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
324         as well.
325
326 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
327
328         * mini-llvm.c: Fix a few problems exposed by make check.
329
330 2010-06-25  Mark Probst  <mark.probst@gmail.com>
331
332         * mini-trampolines.c (common_call_trampoline): An ugly hack to
333         work around a potentially very hard to fix problem with inflating
334         generic methods.
335
336 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
337
338         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
339         problem has been fixes.
340
341 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
342
343         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
344
345         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
346         It might be be better to define a MonoGCJitOptions structure later and have the
347         GC return that.
348
349         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
350
351         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
352
353         * debugger-agent.c (get_objref): Implement support for sgen.
354
355         * driver.c: Remove the unused gc_wrapper.h include.
356
357         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
358         implementation.
359
360 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
361
362         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
363
364         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
365         in MonoCompile.
366
367         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
368         instead.
369
370 2010-06-23  Miguel de Icaza  <miguel@novell.com>
371
372         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
373         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
374
375         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
376         it only for Boehm diagnostics.
377
378         * Makefile.am: Make the file a bit more consistent.
379
380         * debug-debugger.c: Wrap the entire file with an #ifdef
381         MONO_DEBUGGER_SUPPORTED to simplify the build.
382
383         * Makefile.am: Fix the opcodes build issue by including the
384         source, not by including the .lo file directly
385
386         Always bring the MDB sources into the build, to drop the
387         dependency on the AM_CONDITIONAL from configure.in as the hard
388         debugger supports Boehm, but not Sgen, this simplifies the build. 
389
390         * Renamed the *.s files into *.S
391
392 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
395         wb for now on 64bits systems while issues with valuetype returns
396         are not fixed.
397
398 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
399
400         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
401         passes by calling createStandardFunctionPasses ().
402
403 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
404
405         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
406
407 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
408
409         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
410         MONO_INST_FAULT.
411
412         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
413         allow better optimization if the OP_LDADDR which caused the flag to be set was
414         optimized away.
415
416         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
417
418         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
419         the type token.
420
421         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
422
423         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
424
425 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
426
427         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
428         to handle the code sequence generated for non-near calls. Fixes #616056.
429
430 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
431
432         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
433
434         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
435
436         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
437         nesting clause too.
438         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
439         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
440         trampoline which saves the context, so changes made to callee saved registers in
441         finally clauses are visible to a nesting catch clause.
442
443         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
444
445         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
446         in LLVM compiled code.
447         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
448         the finally handler has ran.
449
450         * mini.h (ResumeState): New structure containing information required to resume
451         exception handling after executing LLVM compiled finally clauses.
452
453         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
454         bit, by passing all the registers as one argument.
455
456 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
457
458         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
459         to avoid an assert.
460
461 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
462
463         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
464
465         * aot-compiler.c aot-runtime.c: Fix LLVM support.
466
467         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
468         pad, branch to a new bblock instead.
469
470         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
471         orig_method.
472
473         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
474
475         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
476
477 2010-06-17  Geoff Norton  <gnorton@novell.com>
478
479         * mini-arm.h:
480         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
481         can be used by sgen.
482
483 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
484
485         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
486
487         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
488         fails.
489
490         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
491         the ip done by throw_exception (), it is not needed for corlib exceptions.
492
493 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
494
495         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
496         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
497         of size > 5 words. This support fast barriers for value types up to
498         256/512 bytes which     beyond that the copying itself is the major issue.
499
500         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
501         for gsharing, so use it.
502
503         This eliminate all calls to mono_value_copy from managed code in
504         gmcs, fsharp and ipy.
505
506         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
507
508         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
509         performance kept
510
511         * mini.c (mini_init): Register new icall.
512
513 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
516         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
517
518 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
521         value types as the overhead is huge. Manually expand it up to 5 words to
522         avoid code bloat.
523
524         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
525         is an exception that performance is dominated by mono_value_copy.
526
527         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
528
529 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
530
531         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
532         trampolines on x86, since those have their own cconv.
533
534         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
535         exception trampolines.
536
537         * tramp-x86.c: Add xdebug info for a few trampolines.
538
539         * mini-llvm.c: Set the name of the arguments.
540
541         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
542         using a block address if using the LLVM mono branch.
543
544         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
545         trampolines.
546
547 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
550
551         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
552
553         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
554
555         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
556
557         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
558         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
559         to identify the vtable slot address plus the method which needs to be compiled.
560
561         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
562         using llvm.
563
564         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
565         'this' is always passed as the first argument, before the vtype ret arg. This
566         simplifies get_this_arg_reg () and LLVM integration.
567
568         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
569         the latest changes.
570
571         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
572         these trampolines.
573
574         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
575
576         * mini-llvm.c: Fix compilation with llvm 2.6.
577
578         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
579
580         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
581         defined.
582
583         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
584         is always passed as the first argument, before the vtype ret arg. This simplifies
585         get_this_arg_reg () and LLVM integration.
586
587 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
588
589         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
590
591         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
592         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
593         translate into much nicer code.
594
595 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
596
597         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
598         parameter index information. Use this to simplify a lot of code.
599
600         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
601
602 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
603
604         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
605         to fix infinite generic recursion. Fixes #612702.
606
607 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
608
609         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
610         imt trampoline per imt slot when using LLVM.
611
612 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
613
614         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
615
616 2010-06-09  Levi Bard  <levi@unity3d.com>
617
618         * debugger-agent.c: Clear unloaded types on appdomain unload.
619
620 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
621
622         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
623         Fixes #612206.
624
625         * exceptions.cs: Add a test.
626
627 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
628
629         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
630
631         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
632
633         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
634         so it doesn't have to do it.
635
636         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
637         process does not mix with ours.
638
639         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
640         ones.
641
642         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
643         loads/stores which can throw exceptions inside clauses.
644
645 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
646
647         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
648         one ENDFINALLY.
649
650         * mini.c (mini_init): Register mono_resume_unwind as an icall.
651
652 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
653
654         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
655
656         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
657         locals.
658
659 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
660
661         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
662         appdomain.
663
664 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
665
666         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
667         Use a separate generic class init trampoline for llvm, since it needs a different
668         signature.
669
670         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
671         includes the location of this/rgctx.
672
673         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
674         branch.
675
676 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
677
678         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
679
680         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
681         clause.
682
683 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
684
685         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
686         says so.
687
688         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
689
690         * aot-compiler.c (patch_to_string): New debugging helper function.
691
692 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
693
694         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
695         trampoline.
696
697         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
698
699         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
700
701         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
702
703         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
704         clauses.
705
706         * mini.c (create_jit_info): Print EH clause info for LLVM too.
707
708 2010-05-28  Mark Probst  <mark.probst@gmail.com>
709
710         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
711         cpobj with reference types.
712
713 2010-05-28  Mark Probst  <mark.probst@gmail.com>
714
715         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
716         write barrier for reference types.
717
718 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
721         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
722
723 2010-05-31  Martin Baulig  <martin@ximian.com>
724
725         Fix #608271.
726
727         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
728         clear_breakpoint() on all breakpoint events and remove them from the list.
729
730 2010-05-27  Martin Baulig  <martin@ximian.com>
731
732         Fix #605698.
733
734         * debugger-agent.c (method_commands, type_commands): Temporarily
735         set the appdomain while executing this method; do all metadata
736         calls in the debuggee's appdomain where user assemblies are loaded.
737
738 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
739
740         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
741
742 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
743
744         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
745
746 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
747
748         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
749         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
750         be referenced even after the header is freed.
751
752         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
753         section.
754
755 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
756
757 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
758
759         * genmdesc.c (main): Fixing the detection of the nacl switch.
760
761         Code is contributed under MIT/X11 license.
762
763 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
764
765         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
766
767         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
768
769         * mini.h (LLVM_CHECK_VERSION): New helper macro.
770
771 2010-05-25  Miguel de Icaza  <miguel@novell.com>
772
773         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
774         the Perl program
775
776         * genmdesc.c: Added support for nacl: key on the machine
777         description files to support the extra space required by Google
778         Native Client.
779
780 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
781
782         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
783
784 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
787         mono_runtime_class_init_full ().
788         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
789
790 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
791
792         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
793
794 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
795
796         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
797         two are not the same on ilp32.
798
799 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
800
801         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
802         added by mistake.
803
804         * mini-ppc.c: Fix the DISABLE_JIT build.
805
806 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
807
808         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
809         (make_writable): Remove this unused function.
810
811 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
812
813         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
814         structure. Make the labels to plt entries local symbols instead of assembler local
815         labels, since tha latter causes problems for the iphone linker.
816
817 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
818
819         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
820
821 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
822
823         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
824         (ppc_patch_full): Ditto.
825
826         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
827
828         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
829         if gshared is enabled, to avoid asserts in the trampoline code.
830
831         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
832         on ia64.
833
834 2010-05-15  Geoff Norton  <gnorton@novell.com>
835
836         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
837         xdebug mode.
838
839 2010-05-14  Geoff Norton  <gnorton@novell.com>
840
841         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
842         misaligned stack on darwin.
843
844 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
847         arm.
848
849 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
850
851         * xdebug.c: Fix ARM support.
852
853 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
854
855         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
856         and do most of the work on the normal stack.
857         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
858
859 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
860
861         * aot-compiler.c: Put non-code data into the .rodata section on linux.
862
863 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
864
865         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
866
867 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
868
869         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
870         and do most of the work on the normal stack.
871
872 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
873
874         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
875         and do most of the work on the normal stack even if sigaltstack is disabled.
876
877 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
878
879         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
880         UCONTEXT_REG_ constants are available on linux as well.
881         (mono_arch_monoctx_to_sigctx): Ditto.
882         (mono_arch_ip_from_context): Ditto.
883
884 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
885
886         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
887         other domains.
888
889 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
890
891         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
892         no longer needed.
893
894 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
895
896         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
897         if a breakpoint cannot be inserted.
898
899 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
900
901         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
902
903 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
904
905         * debugger-agent.c (frame_commands): Return an error instead of asserting if
906         no JIT info is found for the method.
907
908 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
909
910         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
911         in debug printf.
912
913 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
914
915         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
916         a list of arch specific trampolines.
917
918         * aot-compiler.c (emit_trampolines): Use it.
919
920 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
921
922         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
923         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
924         get rid of the _full from their name.
925
926 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
927
928         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
929         get_nullified_class_init_trampoline to remove some code duplication.
930
931 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
932
933         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
934         attach.
935
936 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
937
938         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
939
940         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
941
942         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
943         there is no need to jump through the first plt entry.
944
945         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
946
947         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
948         arch-specific function.
949         (mono_aot_get_plt_info_offset): Ditto.
950
951         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
952         mono_arch_init () to register jit icalls called from full-aot trampolines.
953         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
954         to mini-<ARCH>.c.
955
956         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
957         the specialized throw corlib exception trampoline, use a variant of the normal
958         trampoline along with a new C function which does the call to
959         mono_exception_from_token (), just like on x86.
960
961 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
962
963         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
964         Reorganize the full aot trampoline creation functions, instead of taking a bunch
965         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
966         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
967         creation functions on architectures which have the full-aot ones.
968
969 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
970
971         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
972
973 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
974
975         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
976         explicitly, this seems to be required by some gcc versions at -O2.
977
978         * mini-arm.c: Ditto.
979
980 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
981
982         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
983         has_target delegate invokes.
984
985 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
986
987         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
988         info fields.
989
990         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
991         add patches/unwind info arguments, move to mini.c.
992
993         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
994
995 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
996
997         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
998         command which returns full path names.
999
1000 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
1003         code_size output variable.
1004
1005         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
1006         mono_get_lmf_addr.
1007         
1008 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
1011         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
1012         (mono_arch_cpu_enumerate_simd_versions): Ditto.
1013
1014 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
1017         apple assembler.
1018
1019 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
1022
1023 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
1026
1027 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
1030
1031 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
1034         line number support works with eglib.
1035
1036 2010-04-27  Miguel de Icaza  <miguel@novell.com>
1037
1038         * driver.c, mini.c: Since linking with LLVM makes the default Mono
1039         dirty an extra 70kb pages on startup we are now going to choose a
1040         different strategy: ship mono and mono-llvm binaries, with the
1041         second being the one that links with LLVM and defaults to LLVM
1042         being enabled.
1043
1044 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
1047         Implement full-aot support on x86.
1048
1049         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
1050         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
1051         the first register returned by get_global_int_regs ().
1052
1053         * cpu-x86.md: Fix the length of insertx_u1_slow.
1054
1055         * iltests.il.in: Disable tail call tests when running with full-aot.
1056
1057 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1058
1059         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
1060
1061 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1062
1063         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
1064         in the initializer, because it's non-constant.
1065
1066 2010-04-23  Miguel de Icaza  <miguel@novell.com>
1067
1068         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
1069         of LLVM on by default.   Used for buildbots and other setups.
1070
1071 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
1074
1075 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
1076
1077         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
1078         initonly static fields when using moving GC.
1079
1080         Contributed under MIT/X11 license.
1081
1082 2010-04-23  Geoff Norton  <gnorton@novell.com>
1083
1084         * mini-amd64.h: Darwin x86_64 support.
1085
1086 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
1087
1088         * exceptions-arm.c: Remove platform checks in favor of configure checks.
1089
1090 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
1091
1092         * exceptions-arm.c: Add Android support for sigcontext structure.
1093
1094 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
1097         wrappers correctly now that their wrapper info is NULL.
1098
1099 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * mini.c (mono_jit_compile_method_inner): Avoid calling
1102         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
1103
1104 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
1107         so the latter can be #ifndef DISABLE_JIT-ed.
1108
1109         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
1110
1111 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
1114
1115 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1116
1117         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
1118         stack.
1119
1120 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
1123         calling mono_class_num_methods (). Fixes #592244.
1124
1125 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
1128
1129         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
1130
1131 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
1134         version.
1135         * (handle_alloc): Ditto.
1136         (mono_method_to_ir): Remove the constrained call restriction added by a previous
1137         change, its not needed anymore.
1138
1139 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
1140
1141         * mini-posix.c (sigusr1_signal_handler): Fix build on
1142         non x86/amd64 systems.
1143
1144 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1145
1146         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
1147         calls where the constrained class needs a context. Fixes #595863.
1148
1149         * iltests.il.in: Add a test.
1150
1151 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1152
1153         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
1154         2.6/SVN seems to have broken support for them.
1155
1156 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * mini-llvm.c: Fix support for LLVM 2.6.
1159
1160 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
1163         MonoInternalThread belonging to the thread.
1164
1165 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
1166
1167         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
1168         unsafe optimization that will remove bound checks.
1169
1170 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
1171
1172         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
1173         CompareExchange not to be inlined for I8.
1174
1175         Contributed under MIT/X11 license.
1176
1177 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1178
1179         * array.cs: Add tests for cast between primitive array types.
1180
1181 2010-04-07 Andreia Gaita  <avidigal@novell.com>
1182
1183         * Makefile.am: create a convenience library for moon to link with
1184
1185 2010-04-07 Paolo Molaro <lupus@ximian.com>
1186
1187         * method-to-ir.c: optimize array accesses from generic interfaces.
1188
1189 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1190
1191         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1192
1193 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1196         of marshalbyref classes.
1197
1198         Fixes #515884.
1199
1200 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1203         information.
1204
1205         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1206         information.
1207
1208         * mini.h: Increase AOT version.
1209
1210 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1211
1212         * mini-x86.h: Only enable soft debugger when using sigaction or on
1213         Windows. Fixes build on Haiku (lacks siginfo_t).
1214
1215         Code is contributed under MIT/X11 license.
1216
1217 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1218
1219         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1220         BeOS-style signal handlers.
1221
1222         Code is contributed under MIT/X11 license.
1223         
1224 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1225
1226         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1227
1228 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1229
1230         * mini-exceptions.c: Fix win32 build.
1231
1232 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1233
1234         * mini.c, driver.c: Call mono_gc_base_init() before
1235         mono_debug_init().
1236
1237 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1238
1239         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1240         call_method]): Delegate the actual work in security-core-clr.c
1241         to ease code sharing.
1242
1243 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1246         float conv.ovf.un opcodes are encountered, instead of asserting later.
1247         Fixes #566296.
1248
1249 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1252
1253         * iltests.il.in: Add a test.
1254
1255 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1258         large. Fixes #567040.
1259
1260         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1261
1262 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1263
1264         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1265         #592711.
1266
1267 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1268
1269         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1270         mono_create_handler_block_trampoline with the proper #ifdef so that it
1271         compiles on amd64.
1272
1273 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1274
1275         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1276         allows to select if it's new or old context that is passed to 
1277         the callback.
1278
1279         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1280         case when executing a guarded handler from the EH machinery.
1281
1282         * mini-exceptions.c (mono_install_handler_block_guard): New function
1283         responsible for checking for handler blocks, installing the guard and
1284         clearing abort state.
1285
1286         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1287         to check for handler blocks and skip interruption logic if one was found.
1288
1289         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1290         by the handler block guard trampoline. Resumes interruption by raising the
1291         pending ThreadAbortException.
1292
1293         * mini.c (create_jit_info): Calculate the end address of a finally block.
1294
1295         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1296         of a finally block to a specified address and return the old one.
1297
1298         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1299         trampoline patches the original return address and calls the trampoline function.
1300
1301 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1304
1305         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1306         does the patching if the callee is in the same domain.
1307
1308         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1309         of mono_arch_patch_plt_entry ().
1310
1311 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * mini.c (create_jit_info): Fix try block hole length encoding.
1314
1315 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1316
1317         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1318         duplicate information and print offsets instead of absolute addresses.
1319
1320 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1323         event is sent. Fixes #591733.
1324
1325 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1328         OpenBSD.
1329
1330 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1333         thread_to_tls hash table.
1334
1335         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1336         section. Fixes #591000.
1337
1338 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1339
1340         * Makefile.am (version.h): Check for pure .git directory only,
1341         fixes SVN revision when using git without git-svn.
1342
1343         Contributed under MIT/X11 license.
1344
1345 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1346
1347         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1348
1349 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * basic-simd.cs: Test for vector x scalar binary operators.
1352
1353 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1356         intrinsics with expanded scalar arguments.
1357
1358 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1359
1360         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1361         don't have an exception class, so don't decode it. This would crash
1362         with filter clauses.
1363
1364 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1365
1366         Make sure that trunk builds with DISABLE_JIT, an update to the
1367         PlayStation 3 port.
1368         
1369         * mini.c (mini_get_shared_method): this code seems to be necessary
1370         regardless of whether DISABLE_JIT has been defined.
1371
1372         (mono_jit_compile_method_inner): it seems that this method is
1373         required even in full AOT mode, so ifdef out only the pieces that
1374         try to genrate code (the body of code that applies patches to the
1375         code).  
1376
1377         (mini_method_compile): do not compile when using DISABLE_JIT.
1378
1379         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1380         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1381         compile when DISABLE_JIT is set.
1382
1383 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1384
1385         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1386         arch really supports it.
1387
1388 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1389
1390         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1391
1392 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1393
1394         * exceptions-s390x.c: Add support for
1395         mono_arch_get_throw_corlib_exception and fix throw by name.
1396
1397         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1398         logic (especially for varargs); Correct localloc sizing; Add
1399         mono_arch_get_this_arg_from_call and
1400         mono_arch_get_this_arg_from_call.
1401
1402         * mini-s390x.h: Add support for facility list extraction;
1403         Correct/update MONO_ARCH_xxx settings.
1404
1405         * mini-s390.c: Minor corrections to instruction output for
1406         varargs. No IMT implementation - I think it's time to deprecate
1407         s390 and just leave s390x.
1408
1409         * tramp-s390x.c: Correct creation of trampoline instruction
1410
1411
1412         * cpu-s390x.md: Update some instruction lengths
1413
1414 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1417         can be hit with partial sharing.
1418
1419         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1420         in non-shared classes correctly.
1421         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1422         Turn on partial sharing.
1423
1424 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1425
1426         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1427         by mistake.
1428
1429 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1432         mono_method_signature ().
1433
1434         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1435
1436         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1437         error checking, so later calls do not need error checking.
1438
1439 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1442
1443         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1444
1445 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1446
1447         * mini-exceptions.c (mono_handle_exception_internal): Don't
1448         check try_end for archs different than s390. 
1449
1450         * mini.c (create_jit_info): Don't crash if the finallt block is the
1451         last one.
1452
1453 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1454
1455         * driver.c (mono_main): Don't free global codeman under linux since
1456         glic now peeks at code on stack for more archs than just amd64.
1457
1458 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1459
1460         * mini.c, method-to-ir.c: changes to support compressed interface
1461         bitmaps.
1462
1463 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1466         Use sigaction on OpenBSD too.
1467
1468 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1469
1470         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1471
1472 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1473
1474         * debugger-agent.c: #include sys/select.h for fd_set.
1475
1476         Code is contributed under MIT/X11 license.
1477
1478 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1481         (openbsd+amd64 ?).
1482
1483 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1484
1485         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1486         some large methods with lots of exception handlers. Fixes #440924.
1487
1488 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1489
1490         * method-to-ir.c: remove code duplication for interface checks.
1491
1492 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1495         (assembly_unload): Clear all event requests referencing the to-be unloaded
1496         assembly.
1497
1498
1499 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1500
1501         * mini.h, mini-exceptions.c: restore the state of the stack
1502         guard page permissions.
1503
1504 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1507         call site patching code, it doesn't appear to be needed.
1508
1509 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1510
1511         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1512         sharing generic methods whose type arguments are a mix of reference and
1513         non-reference types. Not yet turned on.
1514
1515         * mini.c (mini_get_shared_method): New helper function to return
1516         the method which will be compiled/registered in the JIT tables when doing
1517         generic sharing.
1518         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1519         use mini_get_shared_method ().
1520
1521         * mini.c (mini_method_compile): Register the same method which is compiled when
1522         doing generic sharing.
1523
1524         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1525
1526         * generics.cs: Add partial sharing tests.
1527
1528 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1529
1530         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1531                    Add an enum value that or's all possable values together. Add an enum value
1532                    that marks the end of the used bit indexes.
1533
1534         * mini-amd64.c : Make changes to match the changes in mini.h 
1535
1536         * mini-x86.c : Make changes to match the changes in mini.h
1537
1538         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1539                    simd_version to support more simd versions. Changed the name of
1540                    simd_version to simd_version_flags to make it more intuitive that
1541                    it now contains bit flags. Reordered the *_intrinsics arrays to
1542                    match the changes above. Changed emit_intrinsics() to use the new
1543                    setup mentioned above.
1544
1545         Code is contributed under MIT/X11 license.
1546
1547 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1550         remaining archs. Alpha and hppa maintainers, please stand up.
1551
1552 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1555         is needed even when fail_tramp!=NULL.
1556
1557 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * debugger-agent.c (insert_breakpoint): Write a log message.
1560
1561 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563         * iltests.il.in: Add a few tests for LEAVE going over multiple
1564         finally clauses.
1565
1566 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1567
1568          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1569
1570 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * mini.h (MonoBasicBlock): Add native_length field.
1573         * mini.h (MonoCompile): Add try_block_holes field.
1574         * mini.h (MonoInst): Add exception_clause pointer to
1575         the data union.
1576
1577         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1578         * mini.c (mono_cfg_add_try_hole): New function to register possible
1579         holes in try blocks.
1580         * mini.c (create_jit_info): Fill in the holes information.
1581
1582         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1583         by a try block.
1584
1585         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1586
1587 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1588
1589         * jit-icalls.c: adjusted for the array API changes.
1590
1591 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1594
1595 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1598         the 'pending' flag. This fixes support for appdomains too.
1599
1600
1601 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1602
1603         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1604
1605 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1608         when using LLVM, LLVM generates it itself when needed.
1609
1610         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1611
1612         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1613         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1614         OP_ANDNPS/OP_ANDNPD.
1615
1616 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1619         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1620         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1621
1622 2010-03-11  Martin Baulig  <martin@ximian.com>
1623
1624         * debugger-agent.c (type_commands): Add NULL check to
1625         `CMD_TYPE_GET_SOURCE_FILES'.
1626
1627 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1630
1631 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1634         #586664.
1635
1636         * iltests.il.in: Add a test.
1637
1638 2010-03-05  Martin Baulig  <martin@ximian.com>
1639
1640         Add support for aborting invocations.
1641
1642         * debugger-agent.c
1643         (InvokeData): Added `InvokeData *last_invoke'.
1644         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1645         added a new `invoke' field to keep the `InvokeData *' throughout
1646         the invocation.
1647         (ErrorCode): Added `ERR_NO_INVOCATION'.
1648         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1649         (mono_debugger_agent_handle_exception): Don't report any exception
1650         if an abort was requested.
1651         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1652         a thread abort if necessary.
1653         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1654
1655 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1656
1657         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1658         so we can release the whole list and not just the first one. Free
1659         it in more places as well.
1660
1661 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1662
1663         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1664
1665 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1666
1667         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1668
1669 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1670
1671         * driver.c: report also other misc build options.
1672
1673 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * method-to-ir.c: Generate better code for the NewObject
1676         intrinsic.
1677         
1678 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1681         is disabled. Fixes #582322.
1682
1683         * iltests.il.in: Add a test.
1684
1685 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1686
1687         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1688         the handling of obj->synchronization == null and owner != current thread to
1689         mono_monitor_exit ().
1690
1691         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1692
1693
1694 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1695
1696         * mini.c: change the way emulated opcode info is stored and save about
1697         4 KB of runtime memory.
1698
1699 2010-03-04  David S. Miller  <davem@davemloft.net>
1700
1701        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1702        that don't provide the siginfo in the second signal handler argument
1703        are buggy, and this has been fixed for years.
1704        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1705        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1706
1707 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * aot-runtime.c (find_symbol): Fix a leak.
1710         (decode_patch): Ditto.
1711
1712 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1715
1716 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1719
1720 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1721
1722         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1723
1724 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1725
1726         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1727         to check for errors, it's enough to create the metadata open.
1728
1729         Fixes #562150
1730
1731 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1732
1733         * trace.c|h:
1734         * mini-exceptions.c: Add support for printing stack traces when handling
1735         exceptions, and when printing exceptions thrown while tracing also print
1736         the exception message.
1737
1738 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1739
1740         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1741         since the exclude token is a valid string character.
1742
1743 2010-03-02  Levi Bard  <levi@unity3d.com>
1744
1745         * debugger-agent.c: Invalidate thread stacks on domain unload.
1746
1747 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1748
1749         * method-to-ir.c: Emit dummy_use for stored reference after write
1750         barriers to make sure the object is pinned if the GC interrupts
1751         before the write barrier is done.
1752
1753 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1756
1757 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * debugger-agent.c: Add a log message printing the protocol version.
1760
1761 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1762
1763         * debugger-agent.c: Add a new command to communicate the protocol version used
1764         by the client. This could be used to allow newer runtimes to communicate with
1765         older clients.
1766
1767 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1770
1771 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1774         type.
1775
1776 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1777
1778         * mini-arm.c: make the arm cpu arch configurable with the
1779         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1780         Bug #584198.
1781
1782 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1783
1784         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1785         support for the perf tool on Linux.
1786
1787 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1788
1789         * method-to-ir.c: make string.InsertenalSetChar() specialization
1790         effective.
1791
1792 2010-03-01  Robert Jordan  <robertj@gmx.net>
1793
1794         * Makefile.am: fix the non-static build.
1795
1796 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1799         here.
1800
1801 2010-02-26  Robert Jordan  <robertj@gmx.net>
1802
1803         * tasklets.c (continuation_store): Return from an error condition
1804         immediately.
1805
1806 2010-02-26  Martin Baulig  <martin@ximian.com>
1807
1808         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1809
1810         * debug-mini.c
1811         (MonoDebuggerThreadInfo): Added `internal_flags'.
1812         (MonoDebuggerInternalThreadFlags): New enum.
1813         (_mono_debugger_throw_exception): Don't signal the debugger if a
1814         type abort was requested.
1815         (_mono_debugger_unhandled_exception): Likewise.
1816         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1817         (mono_debugger_runtime_invoke): If the debugger requested a thread
1818         abort during the invocation, reset it here.
1819
1820 2010-02-26  Martin Baulig  <martin@ximian.com>
1821
1822         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1823         instead of `MonoThread *'.
1824
1825 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1828         code offsets table, as it is mostly sorted.
1829
1830 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1833         Fixes #582991.
1834
1835 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1836
1837         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1838
1839 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1840
1841         * Makefile.am: build the new ABI version of the libmono library.
1842         * debugger-agent.c, mini.c: fix warnings with the new API.
1843         * jit.h: don't depend on glib.h being included.
1844
1845 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1848
1849 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1852         ThreadStatic variables.
1853
1854 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1855
1856         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1857         data is not freed yet. Fixes #582460.
1858
1859 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1862         event requests. Bump protocol minor version.
1863
1864 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1867
1868 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1871         #581950.
1872
1873         * iltests.il.in: Add a test.
1874
1875 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1876
1877         * mini.c (inline_method): Check for loader errors.
1878
1879 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1880
1881         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1882         instead of mono_method_get_header as it doesn't decode locals
1883         so the called method can have unresolved dependencies that will only
1884         be satisfied after the current method is JIT'd.
1885
1886         Fixes #550968.
1887
1888 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1889
1890         * basic.cs (test_0_div_opt): Speed this up a bit.
1891
1892 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1895
1896         * mini.c (mono_jit_create_remoting_trampoline): Call
1897         mono_create_specific_trampoline () instead of
1898         mono_arch_create_specific_trampoline ().
1899
1900         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1901
1902 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1905         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1906
1907         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1908
1909         * mini-amd64.c: Fix DISABLE_JIT support.
1910
1911 2010-02-20  Geoff Norton  <gnorton@novell.com>
1912
1913         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1914
1915 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1918         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1919         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1920         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1921         handle_exception.
1922
1923 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1926         edx/ecx too. This is needed to support OP_SEQ_POINT.
1927
1928 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1931
1932         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1933
1934 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1937         LLVM+AOT+exceptions, not enabled yet.
1938
1939 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1942
1943 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1944
1945         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1946         xdebug info for these.
1947
1948         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1949         in a few places.
1950
1951         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1952         not used yet.
1953
1954 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1955
1956         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1957
1958 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1961         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1962
1963         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1964         for mtouch.
1965
1966 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1967
1968         * debugger-agent.c: handle incomplete reads and EINTR in
1969         recv()/send(). This could have been causing random
1970         disconnections.
1971
1972 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1973
1974         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1975         points.
1976
1977         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1978         so they have small offsets. Fixes #566311.
1979
1980 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1981
1982         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1983
1984 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * mini-amd64.c: Remove the special casing of byref in a few places now that
1987         mini_type_get_underlying_type () handles it.
1988
1989         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1990         by returning native int. Fixes #577984.
1991
1992 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1993
1994         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1995         a macro.
1996
1997         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1998         of putting the clause itself.
1999
2000         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
2001
2002 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
2005         might be unaligned.
2006
2007 2010-02-10  Geoff Norton  <gnorton@novell.com>
2008
2009         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
2010
2011 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2012
2013         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
2014         llvm methods too.
2015
2016         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
2017         it is not an LLVM generated symbol.
2018
2019         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
2020
2021         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
2022         implementation in gshared mode because it causes regressions.
2023
2024         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
2025
2026         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
2027         should be done by the caller.
2028
2029         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
2030
2031         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
2032
2033         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
2034         since mono_jit_info_table_find () doesn't do it anymore.
2035
2036         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
2037         instead of mono_jit_info_table_find ().
2038
2039 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
2042
2043         * aot-compiler.c (encode_method_ref): Update after the removal of
2044         mono_gc_get_managed_allocator_type ().
2045
2046         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
2047         Fixes #564538.
2048
2049 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
2052         generic params as well.
2053         (handle_isinst): Ditto.
2054
2055         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
2056         instead of always calling an icall.
2057
2058         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
2059         computing the size of the got.
2060
2061         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
2062         when using LLVM. Instead of emitting it as an LLVM method, emit it using
2063         the assembly directive '.set' so it points to the first LLVM emitted method.
2064
2065 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2066
2067         * mini.c (mini_method_verify): Report the method which failed to verify.
2068
2069 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2070
2071         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
2072         to avoid JIT'ng dead basic blocks. This is the same behavior as the
2073         runtime MS verifier.
2074
2075 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
2078         #561962.
2079
2080 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * mini-llvm.c: Init the jit module only when first JITting.
2083
2084         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
2085
2086         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
2087
2088         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
2089         replaced with the real got.
2090
2091         * debugger-agent.c (type_commands): Return the enumness if the type as well.
2092
2093         * image-writer.c: Reduce the amount of #ifdefs a bit.
2094
2095         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
2096         llvm on darwin/arm.
2097
2098         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
2099
2100         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
2101         global.
2102
2103 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
2106         (mono_llvm_emit_method): Fix unaligned stores too.
2107
2108         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
2109         so async stack walks don't crash.
2110
2111 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
2114         was not patched if the callee needed an rgctx trampoline.
2115
2116 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
2119         vtable address in AOT code.
2120
2121 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
2124         MonoInst's.
2125
2126 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
2127
2128         * genmdesc.pl: remove dependency on external cpp.
2129
2130 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
2133         using LLVM, its not needed, and abcrem can't handle it.
2134
2135 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
2136
2137         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
2138         it easier to group instructions and reduce duplication.
2139
2140 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * decompose.c: Move the array/soft float decompose routines here from
2143         method-to-ir.c.
2144
2145         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
2146
2147 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
2150         to tell LLVM that the got is constant, not used yet.
2151
2152         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
2153
2154 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
2157         managed wrappers.
2158
2159 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * aot-compiler.c (add_wrappers): Commit the hack which generates
2162         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
2163         custom attribute.
2164
2165 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
2168         a fault, only used by the LLVM backend.
2169
2170         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
2171         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
2172
2173         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
2174         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
2175
2176         * mini-llvm.c: Only generate volatile loads from load instructions which have
2177         the MONO_INST_FAULT flag set.
2178
2179 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
2182         64 bit platforms.
2183
2184 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
2187         sequence points. Fixes #571236.
2188
2189 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2192         end of the appdomain unload process, after assemblies have been unloaded.
2193         Fixes #574842.
2194
2195 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2196
2197         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2198         works.
2199
2200         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2201         Fixes #573988.
2202
2203 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2206
2207 2010-01-26  Geoff Norton  <gnorton@novell.com>
2208
2209         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2210         with struct marshalability.
2211
2212 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2215         it supports class names as well.
2216
2217         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2218         needed by the GC map code.
2219
2220         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2221         flags if needed.
2222
2223         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2224         if cfg->init_ref_vars is set.
2225
2226         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2227         cfg->disable_initlocals_op_refs is set.
2228
2229         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2230         using liveness info if cfg->compute_precise_live_ranges is set.
2231
2232         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2233         volatile variables correctly. Add comments about the live ranges. Not enabled
2234         yet.
2235
2236 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2239         0x2a into them in method prologs.
2240
2241         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2242
2243 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2246         classes, since llvm is compiled with -fno-rtti.
2247
2248         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2249
2250         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2251         llvm does not require it.
2252
2253         * aot-runtime.c (load_method): Print the full name of the last aot method.
2254
2255 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2258         thread has not fully started yet.
2259
2260 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2261
2262         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2263
2264 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2265
2266         * driver.c: Do not abort if LLVM is not supported, print a
2267         warning and add the information to the Mono JIT information.
2268
2269 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2272         using explicit null checks.
2273
2274 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2277         related code.
2278
2279         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2280         () in one place.
2281         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2282         its no longer needed.
2283
2284         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2285
2286         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2287         define for platforms still using it (s390). Get rid of the
2288         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2289
2290         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2291         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2292
2293         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2294         the caller pushed the arguments.
2295
2296         * mini-llvm.c: Enable throwing exceptions on x86.
2297
2298         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2299         "Thread (nil) may have been prematurely finalized" messages if this is called
2300         on a thread not registered with the runtime.
2301
2302         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2303
2304 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * jit-icalls.c (mono_array_new_3): New jit icall.
2307
2308         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2309
2310         * arrays.cs: Add a test for 3 dimensional arrays.
2311
2312 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2315         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2316         used.
2317
2318         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2319         thrown on x86.
2320
2321         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2322
2323         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2324
2325         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2326
2327 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2328
2329         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2330           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2331
2332         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2333
2334         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2335
2336         Code is contributed under MIT/X11 license.
2337
2338 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2341
2342         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2343
2344         * mini.c (mini_method_compile): Set the new flag when running under the
2345         debugger.
2346
2347 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2350         a ref/noref value + a global pin flag, so parts of stack frames can still be
2351         precisely marked even if they include stuff which needs pinning. Improve logging.
2352         Fix many bugs. Not enabled yet.
2353
2354         * gc-test.cs: Add a few tests.
2355
2356         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2357         the normal -v options. Avoid propagating liveness information through bblocks
2358         which end with a NOT_REACHED opcode.
2359
2360         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2361         after cfg has been freed.
2362
2363 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2366         if a clause is skipped because it uses the exception object, since it could
2367         have caught the exception.
2368
2369         * exceptions.cs: Add a test.
2370
2371 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2372
2373        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2374
2375         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2376         ICollection<T> wrappers.
2377
2378 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2381
2382 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2385         NOMAP32BIT or optimize_for_xen is set.
2386
2387 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2390         mono_metadata_str_hash () instead.
2391
2392 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2395         sizeof (void*).
2396
2397         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2398
2399 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2402         flag is set.
2403
2404         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2405         throwing code correctly.
2406
2407         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2408
2409 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2412         ftnptrs created by us, handle RGCTX_FETCH correctly.
2413         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2414
2415         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2416         ftnptr added by mono_aot_get_named_code ().
2417
2418 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * mini-arm.c: Fix a few LLVM problems.
2421
2422         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2423
2424 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2425
2426         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2427         AOT compiling.
2428
2429 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2430
2431         * jit.h, method-to-ir.c: added ability to set the policy for
2432         inserting breakpoints from the break IL instruction or the
2433         Debugger.Break () API call.
2434
2435 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2438         assemblies need to be eagerly loaded.
2439
2440 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2443
2444 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2447         an argument which matches any exception.
2448
2449 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2452         optimization if the called method is gshared and marshalbyref, since gshared
2453         methods can' have wrappers. Fixes #569390.
2454
2455         * generics.cs: Add a test.
2456
2457 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2460         callable from gdb.
2461
2462 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2463
2464         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2465
2466 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2467
2468         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2469         since it is not supported in win2000.
2470
2471 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2474         error if loading an assembly fails.
2475         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2476
2477         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2478         if exists.
2479
2480         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2481         compiled methods.
2482
2483         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2484
2485         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2486         is not supported yet.
2487
2488         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2489
2490 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * method-to-ir.c: All types with variant arguments must fallback to the
2493         slow path. This makes cast of variant delegates work.
2494
2495         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2496         argument that is set to TRUE is the returned vtable slot is for a variant
2497         interface. Changed a g_print + g_assert_not_reached to a g_error.
2498
2499         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2500         a similar fashion of generic virtual methods.
2501
2502 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2503
2504         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2505         when cfg is null.
2506
2507         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2508         method using a variance aware function.
2509
2510         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2511
2512 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2513
2514         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2515         do an icall for now.
2516
2517 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2520         If LLVM decides to set the code model to Large, reset it to Default.
2521
2522 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2525         stripped binaries as well.
2526
2527 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2530         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2531
2532         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2533         reg.
2534
2535 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2536
2537         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2538         separate function.
2539
2540         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2541         as the type info to llvm.eh.selector.
2542         (exception_cb): Use the type info for filling out some fields of
2543         MonoJitExceptionInfo like the flags and the exception class. This is needed
2544         because the LLVM produced exception handling clauses might not match the original
2545         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2546
2547         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2548         separate function. Add an extra argument which returns the type infos
2549         corresponding to the exception clauses.
2550
2551         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2552         exception handling clauses.
2553
2554 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2555
2556         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2557         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2558         to fix an AOT case.
2559
2560 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2563         internal assembly.
2564
2565 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2566
2567         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2568         llvm code.
2569
2570 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2571
2572         * mini.c (mini_method_compile): Verify the method before calling
2573         mono_compile_create_vars as this might crash since it uses method
2574         information.
2575
2576         Fixes #560196.
2577
2578 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2581         one case if AOTing, since the class might not be a concrete class.
2582
2583 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2584
2585         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2586         functions which are now defined in mempool-internals.h.
2587
2588         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2589
2590         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2591
2592 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2593
2594         * mini.c:
2595         * method-to.ir.c:
2596         * mini-*.c: Properly handle generic enums.
2597
2598         Fixes #566294
2599
2600 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2603         in a few more places.
2604
2605 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2606
2607         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2608         nullable parameters. Fixes #567351.
2609
2610 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2613
2614 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2617         mono_get_generic_context_from_code () call.
2618
2619         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2620
2621 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2624         needed.
2625
2626 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2627
2628         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2629         mono_method_get_signature returns NULL. Fix #567084
2630
2631 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2634         instead of once for each module.
2635
2636 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * debugger-agent.c (ss_start): Implement step over for the last sequence
2639         point in methods.
2640
2641         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2642         have the STEP_LOC flag set.
2643
2644         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2645         fails. Fixes #566689.
2646
2647 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * mini.c (mono_add_seq_point): New helper function.
2650         (mono_save_seq_point_info): New function to save sequence point info, extracted
2651         from mini_method_compile ().
2652
2653         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2654
2655         * mini.h (MonoSeqPointInfo): New structure containing information about
2656         the sequence points of a JITted method.
2657         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2658         'bucket' field.
2659
2660         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2661         point information is stored, use a MonoSeqPointInfo structure instead of a
2662         GPtrArray. For each seq point, compute a list of successor seq points.
2663
2664         * debugger-agent.c: Use the successor list to implement step-over more
2665         efficiently: instead of single stepping until a different line/IL offset is
2666         reached, place breakpoints into all successor seq points.
2667
2668         * mini.h: Bump AOT file format version.
2669
2670 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2673
2674         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2675
2676 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2679         build.
2680
2681 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2684         alloca as g_malloc is not signal safe.
2685
2686 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2689         VALGRIND_DISCARD_TRANSLATIONS.
2690
2691         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2692         checks, they are no longer needed.
2693
2694         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2695         a function into a sigctx which can handle function pointers.
2696
2697         * mini-ppc.c: Implement soft debugger support on ppc64.
2698
2699         * mini-ppc.c: Implement soft debugger support.
2700
2701 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2704
2705 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2706
2707         * mini.c (mono_get_runtime_build_info): include Mono version in
2708         the returned value.
2709
2710         * driver.c (mono_main): VERSION is now included in the string
2711         returned from mono_get_runtime_build_info()
2712
2713 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2716         signatures. Fixes #565143.
2717
2718         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2719
2720 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2723
2724 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2725
2726         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2727         making max stack 10x smaller.
2728
2729 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2732
2733 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2734
2735         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2736
2737 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2738
2739         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2740         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2741
2742         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2743
2744         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2745
2746         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2747
2748         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2749         the compilation.
2750
2751 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2752
2753         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2754         raise an invalid program exception.   
2755
2756         For other opcodes that we might not handle use a g_warning and
2757         raise the exception.   Beats termination.
2758
2759         Fixes #561724
2760
2761 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2764
2765         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2766         by merging the LLVM and !MAP_32BIT cases.
2767
2768 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2769
2770         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2771         sigctx being passed in, as we have no CONTEXT available in the APC.
2772
2773         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2774         for now.
2775
2776         Code contributed under MIT/X11 license.
2777
2778 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2779
2780         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2781         in the LLVM backend on AMD64.
2782
2783         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2784         FDE.
2785
2786         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2787
2788         * mini-llvm.c: Export mono_personality for AOT.
2789
2790         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2791
2792         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2793         implicit exception can occur.
2794
2795         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2796         OP_IMPLICIT_EXCEPTION instruction.
2797
2798         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2799
2800         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2801
2802         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2803         inside a protected block.
2804
2805         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2806         trampolines doesn't include the argument.
2807
2808         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2809         trampolines on amd64.
2810
2811         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2812         of RDI.
2813
2814         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2815         disabled for methods with clauses.
2816
2817         * mini-llvm.c: Enable support for catch clauses.
2818
2819         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2820         end of an LLVM compiled finally clause.
2821         (mono_handle_exception_internal): Save the exception handling state in TLS
2822         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2823         resume unwinding from that point.
2824
2825         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2826         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2827         to obtain the addresses of the exception handling regions.
2828
2829         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2830         finally clauses are supported.
2831
2832         * mini.c (mini_method_compile): Add support for LLVM code with exception
2833         handlers.
2834
2835 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2838         proper size.
2839
2840 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2843         as a primitive type.
2844
2845 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2846
2847         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2848         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2849         #564000.
2850
2851 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2852
2853         * method-to-ir.c (mini_redirect_call): do not redirect the
2854         InternalAllocateStr internal call if string profiling is enabled.
2855
2856 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2859         generic methods.
2860
2861         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2862         unwind.h header file.
2863
2864         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2865         newer valgrind versions seems to handle this fine.
2866
2867 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2870         on the debugger thread.
2871
2872 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2875
2876         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2877
2878         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2879
2880         * cpu-<ARCH>.md: Make call_handler clob:c.
2881
2882         * mini.c: Reenable SSA for methods with clauses.
2883
2884         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2885         as it causes failures on x86.
2886
2887 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2888
2889         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2890         returns NULL (e.g. a bad assembly).
2891
2892 2009-12-08  Geoff Norton  <gnorton@novell.com>
2893
2894         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2895         stepping out into native code.  There were issues with nested invokes
2896         like .cctors.
2897
2898 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * mini.c (mini_method_compile): Do the disable_llvm checks early
2901         and avoid the LLVM compile pass if the checks fail.
2902
2903         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2904
2905         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2906         LLVM optimizations don't try to remove them.
2907
2908         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2909         different file so the original remains.
2910
2911 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2914
2915         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2916
2917         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2918         support for non-inline unwind descriptors.
2919
2920 2009-12-07  Geoff Norton  <gnorton@novell.com>
2921
2922         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2923         the interrupt_count slightly differently.  Native threads were never
2924         marked as resumed.
2925
2926 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2929         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2930         yet generate this info.
2931
2932         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2933
2934         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2935         client can distinguish between intptrs and longs.
2936
2937 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2938
2939         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2940         blob.
2941
2942         * aot-runtime.c (load_function): Update after the change above.
2943
2944         * mini.h: Bump AOT file format version.
2945
2946         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2947         if the delegate class is dynamic.
2948
2949         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2950         in gshared code too using the new rgctx info type
2951         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2952
2953 2009-12-04  Geoff Norton  <gnorton@novell.com>
2954
2955         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2956         we need to track the original suspend count so the thread properly
2957         wakes up in resume_thread.
2958
2959 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2960
2961         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2962         code.
2963
2964         * generics.cs: Add a test.
2965
2966         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2967         is 0. Simplify a lot of code using this.
2968
2969         * mini-trampolines.c (mono_delegate_trampoline): Call
2970         mono_create_static_rgctx_trampoline () before saving the final address in
2971         delegate->method_code, to avoid calling it each time a delegate is first called.
2972
2973         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2974         which need static rgctx trampolines.
2975
2976         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2977         keyed on the method+addr pair, since addr could be either the method addr or
2978         an unbox trampoline in the AOT case. Fixes #560246.
2979
2980 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2983         place it was called before too.
2984
2985 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2988         if no security manager is present, to speed up the AOT case. Call
2989         mono_class_vtable () full with raise_on_error == TRUE instead.
2990
2991 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2994         the local optimization passes can take its result into account. Fixes
2995         #559876.
2996
2997         * exceptions.cs: Add a test.
2998
2999 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
3000
3001         This patch is contributed under the terms of the MIT/X11 license
3002
3003         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
3004
3005 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * mini.h (MonoInst): Remove unused 'ssa_op' field.
3008
3009         * debugger-agent.c: Rework the handling of stack traces of running threads to
3010         avoid crashes if compute_frames () tries to walk the stack of running thread.
3011
3012         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
3013
3014         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
3015
3016         * mini.h (StackFrameInfo): Add an 'lmf' field.
3017
3018 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * debugger-agent.c (suspend_current): Always set really_suspended.
3021
3022         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
3023
3024         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
3025
3026 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
3029         really suspended.
3030
3031 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
3032
3033         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
3034
3035 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3036
3037         * mini-trampolines.c: Fix MSVC build.
3038
3039 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3040
3041         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
3042
3043 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
3046         the instruction following an OP_FCOMPARE is optimized away.
3047
3048 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
3051         emit_autoreg () into this arch-specific function.
3052
3053         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
3054         code, it is no longer needed.
3055
3056         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
3057
3058         * mini.h: Bump AOT file format version.
3059
3060         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
3061         using the sorted_code_offsets array, instead of reading it from the
3062         exception debug info.
3063         (load_method): Call mono_aot_find_jit_info instead of
3064         decode_exception_debug_info ().
3065
3066         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
3067         LLVM compiled as a flag.
3068
3069 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
3070
3071         * debugger-agent.c (resume_thread): Fix a warning.
3072
3073         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
3074         generated.
3075
3076 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
3079         contents to MonoAotFileInfo.
3080
3081 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
3084         Put all binary data into a giant blob, similarly to the way .net assemblies
3085         store binary data. Emit offset tables in a compact form to reduce their size.
3086
3087         * mini.h: Bump AOT file format version.
3088
3089         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
3090         places.
3091
3092         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
3093         avoid linear searches at runtime.
3094
3095         * aot-runtime.c (find_symbol): Update this to use the hash.
3096
3097         * mini.h: Bump AOT file format version.
3098
3099 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
3102         container.
3103
3104         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
3105         too.
3106
3107         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
3108         the distribution of got slot types.
3109
3110         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
3111
3112         * method-to-ir.c: Add support for generating explicit null checks.
3113
3114 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
3117         on a random thread if possible.
3118
3119         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
3120         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
3121         correctly.
3122
3123         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
3124         regs. Pass the real size of the regs array to mono_unwind_frame ().
3125
3126         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
3127         ones instead.
3128
3129 2009-11-24  Geoff Norton  <gnorton@novell.com>
3130
3131         * mini-darwin.c: Work around apple bug rdar://7209349  See
3132         http://openradar.appspot.com/7209349 for details.  Synopsis,
3133         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
3134         never been initialized before.
3135
3136 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3137
3138         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
3139
3140         * mini-arm.c (mono_arm_thumb_supported): New helper function.
3141
3142 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
3145         OP_SHL_IMM is not 32 bit.
3146
3147 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
3150
3151 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
3154         encountered.
3155
3156         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
3157         > 0 since some threads can resume if their resume_count is > 0.
3158         (invoke_method): Avoid reading freed memory.
3159
3160         * debugger-agent.c (process_suspend): Extract the suspend code from
3161         process_single_step_inner () to a separate function. Rework the code to prevent
3162         races between this function and thread interrupts.
3163
3164         * debugger-agent.c (suspend_current): Check the resume_count field instead
3165         of resume_one so suspends+resumes during single threaded invokes work
3166         correctly.
3167
3168 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
3171         to make the generated code smaller.
3172
3173         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
3174         sequence generated by recent LLVM versions.
3175
3176         * mini-llvm.c: Add support for a few simple cases which weren't supported
3177         before.
3178
3179         * mini-trampolines.c (mono_magic_trampoline): Don't call
3180         mono_arch_get_vcall_slot () when llvm is enabled.
3181
3182         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
3183
3184         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
3185         into a new function called common_call_trampoline () which is used by the
3186         llvm vcall trampoline as well.
3187
3188         * debugger-agent.c: Implement single threaded invokes.
3189
3190         * debugger-agent.c: Revert change which broke the agent on linux.
3191
3192         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3193         #557606.
3194
3195         * generics.cs: Add a test.
3196
3197 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * debugger-agent.c: Fix the cygwin build.
3200
3201 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3202
3203         * cprop.c: Remove this unused file.
3204
3205 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3206
3207         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3208         #557262.
3209
3210         * basic.cs: Add a test.
3211
3212 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3215         in one more place.
3216
3217 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3220         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3221         it. Use this flag to control llvm related code paths instead of #ifdef
3222         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3223         AOT code.
3224
3225         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3226
3227         * mini.h: Bump AOT file format version.
3228
3229         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3230         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3231
3232         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3233         was used as an assembly filter.
3234
3235 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * unwind.c: Fix support for ppc.
3238
3239         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3240         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3241
3242 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3245         port.
3246         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3247         added by the ps3 changes.
3248
3249 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * mini-gc.c: Resurrect this, so at least it compiles.
3252
3253         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3254
3255 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3258         create_event_list () so assembly filters can be used.
3259
3260         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3261         from the LMF.
3262
3263 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3266         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3267         is disabled.
3268
3269         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3270         classes for char/bool too.
3271
3272         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3273
3274         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3275         used.
3276
3277         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3278         Fix warnings.
3279
3280 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3281
3282         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3283         
3284         Code contributed under MIT/X11 license.
3285
3286 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3287
3288         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3289         threads in native code work.
3290
3291         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3292         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3293         version.
3294
3295 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3296
3297         * debugger-agent.c: Implementation for Windows platform.
3298
3299         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3300         primitives. Use SEH to implement breakpoints and single stepping.
3301
3302         * mini-x86.h: Enable soft debugger on Windows.
3303
3304         Code contributed under MIT/X11 license.
3305
3306 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3307
3308         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3309         under XEN. Fixes #522894.
3310
3311         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3312
3313         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3314         interface calls in LLVM AOT code.
3315
3316         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3317         is found.
3318
3319         * mini-llvm.c: Add support for OP_VPHI.
3320
3321         * objects.cs: Add a test.
3322
3323 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3326         this is called on the debugger thread.
3327
3328 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * mini-llvm.c: Add soft-float support.
3331
3332         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3333         FCALL which returns an R4.
3334
3335         * driver.c (mono_main): Add a missing '\n'.
3336
3337         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3338         platforms which doesn't support the LLVM IMT trampoline.
3339
3340 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3343
3344         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3345
3346         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3347         virtual calls.
3348
3349         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3350
3351 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3352
3353         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3354         Instead of emitting a method_order table, sort the contents of the code_offsets
3355         table and do a binary search in the sorted table. The previous approach doesn't
3356         work with LLVM which emits methods in a arbitrary order.
3357
3358         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3359         in the .eh_frame section in ELF files.
3360
3361         * mini.h: Bump corlib file format version.
3362
3363         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3364
3365         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3366         LDMIA->LDM macro name change.
3367
3368 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3371         x86.
3372
3373         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3374         SVN.
3375
3376         * aot-compiler.c: Ditto.
3377
3378         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3379         &align to mini_type_stack_size_full ().
3380
3381         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3382
3383         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3384
3385 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * mini-arm.c: Compute the stack space used by arguments using
3388         mini_type_stack_size_full ().
3389
3390 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3391
3392         * optflags-def.h: Remove dead TREEPROP optimization.
3393
3394 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3395
3396         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3397
3398         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3399
3400 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * driver.c (mono_jit_parse_options): New public API function to parse options
3403         as done by the runtime executable.
3404
3405         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3406         when handling named arguments.
3407
3408 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3411         for passing small vtypes in registers, make the CallInfo structures more
3412         similar to the code on the other platforms.
3413
3414         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3415         the code in the prolog requires it.
3416
3417 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3420         (koush@koushikdutta.com).
3421
3422         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3423         where the thunk memory should be allocated from. Fixes appdomain unloading
3424         on arm.
3425
3426 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3429         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3430
3431 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3434         AOT, as it is not implemented yet.
3435
3436         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3437
3438 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3439
3440         * debugger-agent.c: Fix windows build.
3441
3442 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3445         after the client connects/disconnects.
3446
3447         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3448         when an exception of a given type is thrown.
3449
3450         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3451         only on an uncaught exception.
3452
3453         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3454
3455         * debugger-agent.c: Add a 'launch' option.
3456
3457 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * debugger-agent.c: Add a 'timeout' option.
3460
3461 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3464         the JDWP agent.
3465
3466 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * debugger-agent.c (set_breakpoint): Emit a log message.
3469
3470 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * mini-arm.c: Fix the arm build.
3473
3474 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3475
3476         * aot-compiler.c: don't leak the value returned from
3477         mono_type_full_name().
3478
3479 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3480
3481         * debugger-agent.c: defer including mono-mutex.h until we know the
3482         agent is supported.
3483
3484 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3485
3486         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3487         of pthreads directly.
3488
3489         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3490         exception handlers. Pass info argument.
3491
3492         * mini.h: Adjust signatures of soft debugger functions to pass void*
3493         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3494
3495         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3496         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3497         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3498         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3499
3500         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3501
3502         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3503         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3504         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3505         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3506
3507         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3508
3509         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3510
3511         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3512
3513         * mono-semaphore.h: Skeleton implementation for Windows.
3514
3515         Code contributed under MIT/X11 license.
3516
3517 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3518
3519         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3520
3521         Code contributed under MIT/X11 license.
3522
3523 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3524
3525         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3526
3527         Code contributed under MIT/X11 license.
3528
3529 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3530
3531         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3532         debug info to 100 because 10 still slows down gdb too much.
3533
3534         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3535         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3536         them in the wrappers.
3537
3538 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3541
3542         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3543
3544         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3545         function mono_aot_get_array_helper_from_wrapper ().
3546
3547         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3548         array helper methods.
3549
3550 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3551
3552         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3553         the value was loaded from memory.
3554
3555         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3556         the value was loader from there.
3557
3558         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3559         without constant swizzle.
3560
3561 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3562
3563         * mini-amd64.c: Put soft debugger functions behind a
3564         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3565
3566         * mini-amd64.h: disable the soft debugger in windows.
3567
3568         Code contributed under MIT/X11 license.
3569
3570 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3571
3572         * mini-x86.c: Put soft debugger functions behind a
3573         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3574
3575         Code contributed under MIT/X11 license.
3576
3577 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3578
3579         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3580         to mono_arch_find_jit_info_ext.
3581
3582         Code contributed under MIT/X11 license.
3583
3584 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3585
3586         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3587
3588         * debugger-agent.c: Add support for filtering events by assemblies.
3589
3590         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3591         the agent is not enabled.
3592
3593 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3594
3595         * exceptions-x86.c: hopefully last change to fix the windows build.
3596         This one courtesy of Jonathan Chambers.
3597
3598 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3599
3600         * debugger-agent.c: remove unused function.
3601
3602 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3603
3604         * debugger-agent.c: add #ifdefs for a few header files.
3605         * mini-x86.h: disable the soft debugger in windows.
3606         Step 1 of 2 to make this compile on windows with gcc.
3607
3608 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3611         as it breaks the build.
3612
3613 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3614
3615         Merge the soft debugger branch.
3616
3617         * debugger-agent.h debugger-agent.c: New files containing the soft
3618         mode debugger module.
3619
3620         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3621         at the appropriate locations.
3622
3623         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3624         opcode.
3625
3626         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3627         enable/disable single stepping.
3628
3629         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3630         which returns all information in a StackFrameInfo structure, and can handle the
3631         LMF frames added by the debugger.
3632
3633         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3634         about an LMF frame.
3635
3636         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3637         walker function which works on a specific thread and passes a StackFrameInfo
3638         structure to its callback.
3639
3640         * mini.c (mini_init): Initialize the debugger agent.
3641
3642         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3643
3644         * mini-ops.h: Add OP_SEQ_POINT opcode.
3645
3646         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3647         arguments to the debugger agent.
3648
3649 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3650
3651         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3652         speed things up.
3653
3654         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3655
3656         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3657
3658         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3659
3660         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3661         if needed.
3662         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3663         sets the IMT argument and makes a virtual call.
3664
3665         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3666
3667 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3670         the windows build.
3671
3672 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3675         runtime. Fixes #551228.
3676
3677 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3678
3679         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3680
3681         * basic.cs: Add a test.
3682
3683         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3684         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3685         CONSTRAINED. Fixes #550964.
3686
3687         * generics.cs: Add a test.
3688
3689 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3690
3691         * mini-posix.c (add_signal_handler): Use
3692         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3693
3694 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3695
3696         Contributed under the terms of the MIT/X11 license by
3697         Jerry Maine <crashfourit@gail.com>.
3698
3699         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3700         sse4a for simd intrinsics.
3701
3702         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3703         sse4a for simd intrinsics.
3704
3705 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3708         instead of inst_p1 which is not the same on ILP32 platforms.
3709
3710 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3713         not the mscorlib one before calling mono_get_lmf_addr.
3714
3715         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3716         of the ip to the LMF.
3717
3718         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3719         immediate in the op->op_imm optimization.
3720
3721         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3722         understand. VTypes now work, but are not abi compliant, as they are
3723         split into 4 byte parts instead of 8.
3724         (emit_memcpy): Fix the unrolled case to work on the PS3.
3725
3726         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3727
3728         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3729         the default when static linking.
3730
3731         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3732
3733         * aot-compiler.c: Add an autoreg option to automatically register
3734         statically linked aot modules using ELF .ctors.
3735
3736         * genmdesc.pl: Add __ppc64__ to allowed defines.
3737
3738 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3741         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3742
3743 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3744
3745         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3746
3747 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3750         which will contain the domain where the method was found.
3751
3752         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3753         mini_jit_info_table_find ().
3754
3755         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3756
3757         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3758
3759 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3762         set, its not supported yet.
3763
3764 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3767         iface wrapper is not found.
3768         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3769
3770 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3773         which have a different name.
3774
3775         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3776         wrappers and Array.GetGenericValueImpl ().
3777
3778         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3779         because of the change above.
3780
3781         * generics.cs: Add a test for full aot + generic array ifaces.
3782
3783 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3784
3785         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3786         that hides the previous one.
3787
3788 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3791         marshalled. Fixes #541623.
3792
3793 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3794
3795         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3796
3797 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3798
3799         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3800
3801 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3802
3803         * mini-posix.c (sigprof_signal_handler):
3804         Implemented support for building stat call chans in different ways.
3805
3806 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3807
3808         * mini-exceptions.c (mono_find_jit_info):
3809         Also check that a jit info has been found (fixes a profiler crash).
3810
3811 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3812
3813         * mini.c (mono_codegen):
3814         Call mono_profiler_code_buffer_new with correct code address.
3815
3816 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3817
3818         * driver.c (mono_main): Change the date in the copyright.
3819
3820 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3821
3822         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3823         allocator in shared generic code for open classes, because we
3824         can't get those classes' vtables.  We need to make managed
3825         allocators not depend on the vtable at compile-time to solve this.
3826
3827 2009-10-13  Martin Baulig  <martin@ximian.com>
3828
3829         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3830         `const guint8 *trampoline' argument; send both the old and the new
3831         notification.
3832
3833 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3834
3835         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3836         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3837         (can_marshal_struct): Skip structures with auto layout.
3838
3839         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3840
3841 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3844         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3845         a variable to hold the stack slot used by the int<->float conversion opcodes.
3846
3847         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3848
3849 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3852         when using full-aot.
3853
3854 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3857         each instance of Comparer<T>.
3858
3859         * generics.cs: Add a new test.
3860
3861 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * driver.c (parse_debug_options): Add a 'gdb' option.
3864
3865         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3866
3867         * image-writer.c: Add support for emitting the image into a memory buffer.
3868
3869         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3870
3871         * aot-compiler.c: Add support for registering debug info with GDB using the
3872         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3873         MONO_XDEBUG to 'gdb'.
3874
3875 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3878         gdb mode.
3879
3880 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3881
3882         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3883         can be used to set breakpoints in gdb.
3884
3885         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3886         segment to an absolute address.
3887
3888 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3889
3890         * method-to-ir.c: Use the managed array allocator method if
3891         available.
3892
3893 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3894
3895         * aot-compiler.c : Fix the MSVC builds
3896
3897         Code is contributed under MIT/X11 license.
3898
3899 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3902         avoid registering 1 symbol file per method with gdb.
3903
3904 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * mini-sparc.c: Fix the handling of enums with base type long.
3907
3908         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3909
3910         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3911         instead of using type->data.klass as the later doesn't work with generics.
3912
3913 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3914
3915         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3916         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3917         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3918         works differently now and we don't handle it in the JIT anymore.
3919
3920         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3921         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3922         the Thread class split.
3923
3924 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * driver.c: Don't run tests with the obsolete treeprop optimization.
3927
3928         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3929         variable volatile. Fixes #541577.
3930
3931         * basic-calls.cs: Add a new test.
3932
3933         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3934
3935 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3938         work/required with recent iphone sdk versions.
3939
3940         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3941         structures.
3942
3943         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3944         in the VCALL decomposition code.
3945
3946 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3949
3950         * basic.cs: Add a test.
3951
3952         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3953         generic invokes.
3954
3955         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3956         searches all the domains of the current thread.
3957
3958         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3959
3960 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3963         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3964
3965         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3966         for non-jit trampolines.
3967
3968         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3969
3970         * aot-compiler.c (add_wrappers): Ditto.
3971
3972         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3973         the size of the param area used by dyn_call to 6 which covers the majority of
3974         methods.
3975
3976         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3977
3978         * mini-arm.c: Implement support for passing/receiving
3979         longs and receiving floats in the dyn_call code.
3980
3981         * mini-amd64.c: Implement support for receiving vtypes in registers in
3982         the dyn_call code.
3983
3984         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3985         the dyn_call code.
3986
3987 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * mini-arm.c (get_call_info): Return more precise information in
3990         ArgInfo->regtype.
3991         (dyn_call_supported): Use the information in CallInfo.
3992
3993         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3994
3995         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3996         code.
3997
3998         * mini-arm.c: Update after the dyn_call api changes.
3999
4000         * mini.c (mini_create_jit_domain_info): Register a destructor function
4001         for the runtime_invoke_hash.
4002
4003         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
4004         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
4005         this function.
4006         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
4007         (dyn_call_supported): Simplify this by using get_call_info ().
4008         (mono_arch_dyn_call_free): New destructor function.
4009
4010         * generics.cs: Remove a printf.
4011
4012         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
4013
4014         * mini-arm.c: Add support for enum return values and passing a few arguments
4015         on the stack.
4016         
4017         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
4018         dyn invoke.
4019
4020         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
4021
4022         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
4023         the dynamic invoke wrappers.
4024
4025         * mini-arm.c: Implement OP_DYN_CALL for arm.
4026
4027         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
4028         supported by the dynamic runtime invoke wrapper.
4029
4030         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
4031         runtime invoke wrapper.
4032
4033         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
4034         if possible when running with full-aot.
4035
4036         * mini-ops.h: Add OP_DYN_CALL opcode.
4037
4038         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
4039         with dynamic arguments lists similar to libffi.
4040
4041 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
4042
4043         * method-to-ir.c: Fix the previous change on 64 bit platforms.
4044         
4045         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
4046         to NEWARR.
4047
4048         * iltests.il.in: Add a new test.
4049         
4050 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
4051
4052         * aot-compiler.c (add_generic_instances): Add more instances of
4053         GenericEqualityComparer.
4054
4055 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4056
4057         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
4058
4059 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4060
4061         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
4062         comments on some functions that now can fail.
4063
4064 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
4065
4066         * Makefile.am: Add Info.plist to EXTRA_DIST
4067
4068 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
4071         static synchronized wrappers. Fixes #539500.
4072
4073 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
4074
4075         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
4076         properly.
4077
4078 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
4081         lmf before calling filter clauses as well. Fixes #539550.
4082
4083         * exceptions.cs: Add a test.
4084         
4085 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
4086
4087         * aot-compiler.c (add_generic_class): Add instances of
4088         Array.GetGenericValueImpl as well.
4089
4090         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
4091         can be tested too.
4092
4093         * generics.cs: Add a fullaot linq test.
4094
4095 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
4096
4097         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
4098         reg r1 on arm.
4099
4100 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4101
4102         * mini-trampolines.c (mono_delegate_trampoline) : Call
4103           mono_cominterop_get_invoke if the delegate target object
4104           is a COM object.
4105
4106         Code is contributed under MIT/X11 license.
4107
4108 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
4109
4110         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
4111         internal call is defined outside platform code. Reduce code 
4112         duplication with existing [Method|Field]AccessException
4113
4114 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4115
4116         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
4117         if the return value is a small struct passed on regs.
4118
4119 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * cpu-arm.md mini-arm.c: Remove unused opcodes.
4122
4123         * mini-codegen.c: Enable the cpu description validation for arm.
4124
4125 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
4128         test which depends on structs to objects.cs.
4129         
4130         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
4131         require object model related stuff working.
4132
4133         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
4134
4135         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
4136
4137         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
4138         against the instruction metadata in mini-ops.h. amd64 only for now.
4139
4140         * mini-ops.h: Fix some instruction descriptions.
4141
4142         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
4143         unused instructions.
4144
4145 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4146
4147         * exceptions.cs: Add a new test.
4148
4149 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4150
4151         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
4152
4153 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
4156         skip empty phi opcodes.
4157         
4158         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
4159         correctly by zero extending after loads. Skip methods containing calls
4160         to the monitor enter/exit trampolines.
4161
4162         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
4163         when calling mono_thread_force_interruption_checkpoint ().
4164
4165         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
4166
4167         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
4168         64 bit thunks.
4169         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
4170
4171         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
4172         bootstrap could run.
4173
4174 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
4177
4178 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
4181         of the method to
4182         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4183         LLVM might be very short.
4184
4185         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
4186         in OP_THROW/RETHROW.
4187
4188         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4189         alignment on osx.
4190
4191 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4194         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4195         LLVM might be very short.
4196
4197 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4200         the alignment for the value of sp.
4201
4202 2009-09-01  Geoff Norton  <gnorton@novell.com>
4203
4204         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4205         managed wrappers in full aot.
4206
4207 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4210
4211 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4214
4215 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4216
4217         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4218
4219         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4220         saved info.
4221
4222         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4223
4224         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4225         depend on the info MonoMethodHeader which could be missing in IL stripped
4226         assemblies.
4227
4228 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4231         they are only 4 byte aligned.
4232
4233 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4234
4235         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4236         was done previously, since using SP causes too many problems.
4237
4238         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4239         frames without a frame pointer works.
4240
4241         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4242         global register in methods with calls, since the calls can go through
4243         a static rgctx trampoline which doesn't save it.
4244
4245 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4246
4247         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4248
4249 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4252
4253 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4254
4255         * method-to-ir.c: Fix warnings for uninitialized variables.
4256
4257 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4258
4259         * mini-exceptions.c:
4260         * aot-compiler.c: Fix printf warnings.
4261
4262 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4265         Add GetGenericValueImpl<string>.
4266         
4267         * aot-compiler.c (add_generic_instances): Add instances of
4268         GenericEqualityComparer<T> for primitive types. Only emit the array
4269         wrappers into the mscorlib image.
4270
4271 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4272
4273         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4274         the methods_loaded array using amodule->info->nmethods.
4275
4276         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4277         (MONO_AOT_FILE_VERSION): Bump this.
4278
4279         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4280         to work.
4281
4282         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4283         MonoJitInfo doesn't belong to its methods aot image.
4284
4285 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4286
4287         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4288
4289         * mini-arm.c: Fix warnings.
4290         
4291         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4292
4293         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4294         supports it.
4295
4296 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4299         avoid clobbering IP.
4300
4301         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4302         hold the trampoline argument, so its initial value is available during
4303         debugging.
4304
4305 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4306
4307         * exceptions-arm.c:
4308         * exceptions-hppa.c:
4309         * mini.c:
4310         * exceptions-s390x.c:
4311         * exceptions-mips.c:
4312         * exceptions-ppc.c:
4313         * exceptions-sparc.c:
4314         * exceptions-alpha.c:
4315         * aot-runtime.c:
4316         * mini-trampolines.c:
4317         * exceptions-x86.c:
4318         * exceptions-s390.c: add and use #define's instead of sizeof()
4319         for MonoJitInfo and MonoJitInfoTable.
4320
4321 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4322
4323         * tramp-arm.c:
4324         * tramp-amd64.c:
4325         * tramp-ppc.c:
4326         * tramp-x86.c: use a #define instead of sizeof() for a few
4327         structures that use a zero-length array.
4328
4329 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4330
4331         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4332         case when the method is dynamic. Fixes #529238.
4333
4334 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4337         of asserting when a method is JIT compiled in full-aot mode.
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         * fixed wrong dates in changelog.
4345
4346 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4347         
4348         Contributed under the terms of the MIT/X11 license by
4349         Jerry Maine <crashfourit@gail.com>.
4350
4351         * basic-simd.cs: added test for packed double square root.
4352         * cpu-amd64.md: added opcode info for packed double square root.
4353         * cpu-x86.md: added opcode info for packed double square root.
4354         * mini-ops.h: added IR opcode for packed double square root.
4355         * mini-x86.c: added IR to native translation code for packed double square root.
4356         * mini-amd64.c: removed todo for packed double square root.
4357         * simd-intrinsics.c: added method to IR opcode converstion for
4358         packed double square root.
4359
4360 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4361
4362         Contributed under the terms of the MIT/X11 license by
4363         Jerry Maine <crashfourit@gail.com>.
4364
4365         * mini-amd64.c: Added a change to help tell the difference as 
4366         to what perpose the xmm register is being used--mainly to help
4367         with debuging.
4368         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4369         (one used for special cases) xmm registers for both fp
4370         and simd ops. Added define to turn on new feature in the regalloc
4371         that allows fp and simd ops to share the xmm regs happily.
4372         * codegen.c: Added code to detect for which perpose an xmm reg is
4373         being used (fp or simd) and to translate back and forth to the
4374         correct logical reg bank (fp or simd) for 'spill load's.
4375
4376 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4377
4378         Contributed under the terms of the MIT/X11 license by
4379         Jerry Maine <crashfourit@gail.com>.
4380
4381         * basic-simd.cs: Added tests for stressing the regalloc when running with
4382         16 simd regs and when simd and fp ops share the same reg bank.
4383
4384 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4385
4386         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4387         in shared generic code, we might have to look up the class in the
4388         RGCTX.  If we use the class directly, compute its GC descriptor.
4389
4390 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4391
4392         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4393
4394 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4395
4396         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4397         check for errors. Fixed the case when the class with the Main
4398         method is broken.
4399
4400 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4401
4402         Contributed under the terms of the MIT/X11 license by
4403         Jerry Maine <crashfourit@gail.com>.
4404
4405         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4406
4407 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4408
4409         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4410
4411 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * method-to-ir.c: Fix naming of stelem and ldelem.
4414
4415 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * driver.c (main_thread_handler): Check that the assembly loaded
4418         matches the filename when doing AOT.
4419
4420 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4421
4422         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4423         call it anymore.
4424
4425         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4426         utils/mono-sigcontext.h).
4427
4428         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4429         #ifdef.
4430
4431 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4432
4433         * mini.c (mono_codegen):
4434         Call profiler hook to keep track of method code buffers.
4435
4436 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4437
4438         * method-to-ir.c: Invoke write barriers for the
4439         Interlocked.(Compare)Exchange JIT intrinsics.
4440
4441 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4442
4443         * Makefile.am (version.h): Fix issues when built out of tree.
4444         Remove some redundant 'grep's piped through 'sed's.
4445
4446 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4447
4448         This patch is contributed under the terms of the MIT/X11 license
4449
4450         * mini-ppc.c (mono_arch_output_basic_block):
4451         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4452         for bits 32-47 with signed load/store diplacements for bits
4453         48-63.  Use prefered base/offset order for indexed form.
4454         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4455         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4456         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4457         OP_LOADI2_MEMBASE): Same.
4458         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4459         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4460         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4461         indexed form.
4462         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4463         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4464         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4465         OP_LOADI1_MEMINDEX): Same
4466         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4467         OP_STORER8_MEMINDEX): Same
4468         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4469         computations.
4470         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4471         for bits 32-47 with signed load/store diplacements for bits
4472         48-63.  Use prefered base/offset order for indexed form.
4473
4474 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4475
4476 This patch is contributed under the terms of the MIT/X11 license
4477
4478         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4479         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4480         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4481         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4482         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4483         cfg->stack_usage to avoid size warnings.
4484         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4485         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4486         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4487         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4488         to convert.
4489         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4490         after code varible is initialized.
4491         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4492         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4493         (mono_arch_emit_epilog): 
4494         Move Use ppc_load32 for cfg->stack_usage to avoid size
4495         warnings.
4496
4497 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4498
4499         * method-to-ir.c: The write barrier doesn't do the store anymore,
4500         so we have always to emit it.  Also, emit the wbarrier after the
4501         store.
4502
4503 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4506         for argument count 3 too.
4507
4508 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4511         the caller handle the exceptions.
4512         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4513         method. Fixes #524498.
4514
4515 2009-07-22  Geoff Norton  <gnorton@novell.com>
4516
4517         * mini-exceptions.c: Fix build on ia64.
4518
4519 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4520
4521         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4522         barriers.
4523
4524 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4527         code.
4528
4529 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * basic-simd.cs (Main): Pass args to the test driver.
4532
4533 2009-07-20  Geoff Norton  <gnorton@novell.com>
4534
4535         * mini-x86.h: Fix the x86 version guards to use Apple's
4536         properly defined macros.
4537
4538 2009-07-20  Geoff Norton  <gnorton@novell.com>
4539
4540         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4541         aligned access.
4542
4543 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4546         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4547         the information which is needed for invokes, so only one locking+hash table
4548         lookup is needed.
4549
4550         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4551         
4552         * aot-compiler.c (add_generic_instances): Emit instances of 
4553         GenericComparer<T> for primitive types.
4554
4555 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         * mini-posix.c: Fix linux build.
4558
4559 2009-07-19  Geoff Norton  <gnorton@novell.com>
4560
4561         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4562         mono_gdb_render_native_backtraces
4563         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4564         so we implement the sane semantics to the runtime here
4565         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4566         so we need to call it differently (mono_gdb_render_native_backtraces)
4567         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4568         here for default implementations.
4569         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4570         support Apple's weird syscall (SYS_fork) implementation and not busy
4571         loop in abort() on native crashes on OSX anymore.
4572
4573 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * aot-runtime.c (load_method): Change the handling of the
4576         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4577         are used.
4578
4579         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4580
4581 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4582
4583         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4584         seems to break the aot tests.
4585         
4586         * mini.c (mono_patch_info_equal): Fix the handling of 
4587         MONO_PATCH_INFO_RGCTX_FETCH.
4588
4589 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4592
4593         * mini.c (mono_patch_info_hash): Fix the handling of 
4594         MONO_PATCH_INFO_INTERNAL_METHOD.
4595         (mono_patch_info_equal): Ditto.
4596
4597 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4598
4599         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4600         in a few places.
4601         
4602         * mini-llvm.c: Add some infrastructure for AOT support.
4603
4604 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * mini-llvm-cpp.c: Update to the latest llvm api.
4607         
4608         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4609         option to false to prevent llvm from installing signal handlers which
4610         trip up the gc.
4611         
4612 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4613
4614         * cpu-x86.md:
4615         * cpu-amd64.md: Revert previous change as those instructions
4616         take 2 separate arguments. Remember to read the arch docs more
4617         carefully next time.
4618
4619 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4620
4621         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4622
4623 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4624
4625         * mini-ppc.c: exploit multiple load/store units if available (rest of
4626         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4627         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4628
4629 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4630
4631         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4632         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4633
4634 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * cpu-x86.md: Fix missing clobbering from trancendental simd
4637         ops.
4638
4639         * cpu-amd64.md: Same.
4640
4641 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4642
4643         Contributed under the terms of the MIT/X11 license by
4644         Jerry Maine <crashfourit@gail.com>.
4645
4646         * basic-simd.cs: Added tests for single and doulble indexers.
4647
4648         * cpu-amd64.md: Added simd opcode information.
4649
4650         * mini-amd64.c: Added IR to native simd generation code.
4651         Added simd register names and function that returns them.
4652
4653         * mini-amd64.h: Added marcos to turn on simd code compilation in
4654         amd64. Added max simd register count marco. Added caller/callee
4655         register mask marcos. Added marcos to use simd register bank.
4656
4657         * mini.h: Added helper marco for shufling dwords and simple
4658         floats.
4659
4660 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4661
4662         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4663
4664         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4665
4666         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4667         the length of the native code as well.
4668
4669         * basic-simd.cs: Add a test for #521662.
4670
4671 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4672
4673         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4674
4675 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4676
4677         * mini.c: Register function for getting the IP from a signal
4678         context with metadata.
4679
4680 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4681
4682         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4683         call a generic class init trampoline if needed. Fixes #519336.
4684
4685         * generics.cs: Add a test.
4686         
4687 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4688
4689         * method-to-ir.c: When doing a call which might be remote from
4690         shared generic code to other shared code with open type arguments,
4691         get the remoting invoke wrapper from the RGCTX and do an indirect
4692         call to it.
4693
4694 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4695
4696         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4697         after the unbox trampoline in the full-aot case.
4698
4699 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4700         
4701         * mini.c: Move initialization of jit_mutex before debugger initialization
4702         
4703         to avoid crashes.
4704         
4705         
4706         * Info.plist: added Info.plist and link flag to enable the mono executable
4707         to access other processes. Requires codesigning of the executable to work.
4708         
4709         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4710         
4711         compile on OS X.
4712         
4713
4714 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4717
4718 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4721         when the generic instance is an instantiation of a subclass of the
4722         methods class. Fixes #517166.
4723
4724 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4727         code.
4728
4729         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4730         AOTed code.
4731
4732         * CMakeLists.txt: Add minimal support for installation.
4733
4734 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4737         determine whenever a method is directly callable to a separate function.
4738
4739         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4740         needed ones as a result of the previous change.
4741
4742         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4743         type of register arrays.
4744
4745         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4746         type of register arrays.
4747
4748 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4749         
4750         Contributed under the terms of the MIT/X11 license by
4751         Jerry Maine <crashfourit@gail.com>.
4752
4753         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4754
4755 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4758
4759 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4760
4761         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4762         dump of structure return value. Fix some formatting.
4763         * cpu-s390x.md: Fix lengths of instruction sequences.
4764         * mini-s390.c: Minor formatting changes.
4765
4766 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4769         Use sigaction on freebsd as well.
4770
4771 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4774         uses #ifdef on it.
4775         
4776         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4777
4778 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4779
4780         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4781
4782 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4783
4784         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4785
4786 2009-06-20  Martin Baulig  <martin@ximian.com>
4787
4788         * debug-mini.c
4789         (MonoDebuggerThreadFlags): New enum typedef.
4790         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4791         (mono_debugger_thread_created): Added `gpointer func' argument;
4792         initialize the new `thread_flags' field.
4793
4794 2009-06-18  Martin Baulig  <martin@ximian.com>
4795
4796         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4797         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4798
4799         * debug-debugger.c
4800         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4801         flag in `MONO_DEBUGGER__info.runtime_info'.
4802
4803         * driver.c
4804         (mono_main): Call mini_debugger_set_attach_ok() if generics
4805         sharing is disabled.
4806
4807 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * aot-compiler.c (add_wrappers): Fix a warning.
4810
4811         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4812         the ppc load/store macro changes.
4813
4814 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4815
4816         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4817
4818         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4819         not just the got symbol.
4820
4821         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4822         on ppc.
4823
4824         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4825         ppc.
4826         
4827         * aot-compiler.c: Remove some fixmes.
4828
4829         * driver.c (mono_main): Print a helpful message when cross-compiling.
4830
4831         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4832
4833         * method-to-ir.c (initialize_array_data): Do the optimization if the
4834         target byte order is little endian, instead of the host byte order.
4835
4836         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4837         wrappers into the mscorlib image, Emit a unique plt symbol for each
4838         image, emit symbols for plt entries.
4839
4840         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4841         a .size directive.
4842         
4843 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * aot-compiler.c (add_wrappers): Avoid calling 
4846         mono_marshal_get_type_info () since it can assert for some types.
4847
4848         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4849         ldtoken are used inside wrappers.
4850
4851         * helpers.c: Add support for prefixing tools with the arch name.
4852
4853         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4854         quantities when using ilp32.
4855
4856         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4857         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4858
4859         * image-writer.c: Use .long on ilp32.
4860
4861         * aot-compiler.c: Use 32 bit loads on ilp32.
4862         
4863 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4866
4867         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4868
4869         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4870
4871         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4872         second got slot of every aot image.
4873         
4874         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4875         aot on platforms with function pointers.
4876
4877         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4878         support for aot/full aot on ppc/ppc64.
4879         
4880         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4881         arguments which are needed on ppc.
4882
4883         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4884         argument.
4885
4886         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4887         
4888         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4889
4890         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4891
4892         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4893
4894         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4895
4896 2009-06-17  Geoff Norton  <gnorton@novell.com>
4897
4898         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4899
4900 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4903         to control whenever the dwarf writer is in xdebug or aot mode.
4904         (emit_class_dwarf_info): Use a separate abbrev for structures without
4905         children.
4906
4907         * aot-compiler.c: Pass the appending parameter to 
4908         mono_dwarf_writer_create ().
4909
4910         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4911         falls through to its next bblock. Fixes #513931.
4912
4913         * iltests.il: Add a test.
4914
4915         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4916         infor even if emit_line is FALSE, as the apple linker seems to require it.
4917
4918         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4919
4920         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4921         gcc does.
4922         (emit_fde): Ditto.
4923
4924 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4927         mips build.
4928
4929 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4932         'has_call_handler' fields.
4933
4934         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4935
4936         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4937         first bblock if not needed. Fixes #512790.
4938         
4939 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4942         
4943         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4944         wrappers.
4945
4946         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4947         remoting-invoke-with-check wrappers, which are not needed when running with
4948         full-aot, since it doesn't support remoting.
4949         
4950 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4951
4952         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4953
4954         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4955         method info, it is not used anymore.
4956
4957         * mini.h: Bump AOT file format version.
4958         
4959         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4960         word smaller.
4961
4962         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4963         change above.
4964         
4965         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4966
4967         * mini.h: Bump AOT file format version.
4968         
4969 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4970
4971         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4972         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4973         iphone.
4974
4975         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4976         of CKFINITE and FBGE for VFP.
4977
4978 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4979
4980         * aot-compiler.c: Don't align code to 16 bytes on arm.
4981         
4982         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4983         before the methods they belong to.
4984
4985         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4986         the full-aot case if possible, since the trampoline will be called right 
4987         away.
4988
4989         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4990         trampolines to 1024 after the change above.
4991
4992         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4993         trampoline to save 8 bytes per trampoline.
4994
4995         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4996         change above.
4997
4998 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
5001
5002 2009-06-08  Martin Baulig  <martin@ximian.com>
5003
5004         * debug-mini.c
5005         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5006         (_mono_debugger_throw_exception): Don't make this static.
5007         (_mono_debugger_unhandled_exception): Likewise.
5008         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5009
5010         * debug-mini.c
5011         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5012         (_mono_debugger_throw_exception): Add function prototype.
5013         (_mono_debugger_unhandled_exception): Likewise.
5014
5015         * mini-exceptions.c
5016         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5017         arg; return the first exception handler if the exception is caught
5018         and we're running inside the debugger.
5019         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5020         improve exception handle inside runtime-invoke, check whether the
5021         exception is actually caught in the method being invoked and not
5022         by the runtime-invoke-wrapper.
5023
5024 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * image-writer.c: Improve support for the osx assembler.
5027
5028         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
5029         support them.
5030
5031 2009-06-08  Martin Baulig  <martin@ximian.com>
5032
5033         * debug-mini.c
5034         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
5035         (_mono_debugger_throw_exception): Don't make this static.
5036         (_mono_debugger_unhandled_exception): Likewise.
5037         (mono_debugger_handle_exception): Moved to mini-exceptions.c
5038
5039         * debug-mini.c
5040         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
5041         (_mono_debugger_throw_exception): Add function prototype.
5042         (_mono_debugger_unhandled_exception): Likewise.
5043
5044         * mini-exceptions.c
5045         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
5046         arg; return the first exception handler if the exception is caught
5047         and we're running inside the debugger.
5048         (mono_debugger_handle_exception): Moved here from debug-mini.c;
5049         improve exception handle inside runtime-invoke, check whether the
5050         exception is actually caught in the method being invoked and not
5051         by the runtime-invoke-wrapper.
5052
5053 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * image-writer.c (append_subsection): Don't align subsections of the
5056         debug_line section as a workaround.
5057
5058         * dwarfwriter.c: Emit line number info in the AOT case as well.
5059
5060 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
5061
5062         This patch is contributed under the terms of the MIT/X11 license
5063
5064        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
5065        code_len <= code_size
5066
5067 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
5068
5069         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
5070
5071 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5072
5073         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
5074         invoke wrappers, we now use trampolines instead.
5075
5076 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5077
5078         * mini-darwin.c: The exception thread must not be registered with
5079         the GC.
5080
5081 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5082
5083         * mini-gc.c: Disable the code because it makes SGen crash.
5084
5085 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
5088         instead of asserting.
5089
5090 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5091
5092         * aot-compiler.c (mono_compile_assembly): Move the creation of the
5093         output file after the code has been compiled.
5094
5095 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
5096
5097         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
5098
5099 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
5102         entries distinction to simplify the code.
5103
5104         * mini.h: Bump AOT file format version.
5105         
5106 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * objects.cs: Fix the signature of one of the tests.
5109
5110         * mini.c (mini_create_ftnptr): New helper function, moved here from
5111         object.c.
5112         (mini_get_addr_from_ftnptr): Ditto.
5113         (mini_init): Install the new helpers.
5114
5115 2009-05-28  Martin Baulig  <martin@ximian.com>
5116
5117         Correctly initialize the debugger when embedding Mono.
5118
5119         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
5120         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
5121         see documentation in mini_debug_running_inside_mdb().
5122
5123         * debug-debugger.c
5124         (mini_debug_running_inside_mdb): New function to check whether
5125         we're running inside mdb.
5126
5127         * mini.c (mini_init): Call mini_debugger_init() if we're running
5128         inside the debugger.
5129
5130         * driver.c (mono_main): Moved the call to mini_debugger_init()
5131         into mini_init() to make this work when embedding Mono.
5132
5133         * debug-debugger.c (mini_debugger_init): Warn about duplicate
5134         calls to mini_debugger_init().
5135
5136         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
5137         mono_debugger_main() -> mini_debugger_main() and put them inside a
5138         `MONO_DEBUGGER_SUPPORTED' conditional.
5139
5140 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5141
5142         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
5143         this is no longer in use.
5144         * mini.h: Same.
5145
5146 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * mini-sparc.c (add_outarg_load): Fix the sparc build.
5149
5150         * aot-compiler.c (emit_method_code): Always write out C style symbols for
5151         methods.
5152
5153 2009-05-27  Martin Baulig  <martin@ximian.com>
5154
5155 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5156
5157         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
5158         long_conv_to_r_un to 64 bits.
5159
5160         * cpu-x86.md: Increase the instruction size due to the changes.
5161
5162         * iltests.il.in: Add regression test.
5163
5164         Fixes #467201.
5165
5166 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5167
5168         * objects.cs: Move the previous test from basic.cs to here.
5169
5170 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5171
5172         * basic.cs: Add regression test for #506915.
5173
5174 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5175
5176         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
5177         optimization we must check the bb of the first byte of stobj as
5178         it's the only one set in cil_offset_to_bb.
5179
5180         Fixes #506915.  
5181
5182 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5183
5184         * image-writer.c: Fix pointer directive on ppc64.
5185
5186 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * image-writer.c (asm_writer_emit_section_change): Avoid using
5189         .bss subsections on ppc too.
5190
5191 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5192
5193         * image-writer.c: Fix the definition of TARGET_ASM_....
5194         
5195         * image-writer.c: Fix the emission of assembler directives in the last
5196         change.
5197
5198         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5199         exception throwing code to accomodate ppc64.
5200
5201         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5202         size to work on ppc64 too.
5203
5204         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5205         too.
5206
5207         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5208         the assembler dialect instead of using platform specific defines.
5209
5210 2009-05-22  Geoff Norton  <gnorton@novell.com>
5211
5212         * mini-arm.c (get_call_info): If a structure is split between the stack
5213         and argument registers, we should not advance the stack pointer by the entire
5214         native size, but just by the amount that spilled.
5215
5216 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5219         correctly.
5220
5221 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5222
5223         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5224         wrappers normally.
5225         
5226         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5227         methods so wrapper don't get added twice.
5228         (add_generic_instances): Don't add methods of arrays.
5229
5230         * generics.cs: Mark one test as !FULLAOT.
5231
5232 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5233
5234         * mini-x86.c (emit_move_return_value): Remove unused vars.
5235
5236 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5239         decomposing 8 bytes structs into a LCALL.
5240
5241         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5242         pointer for where to store the returned regs.
5243
5244         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5245         state the concern.
5246
5247         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5248
5249 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5250
5251         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5252         without getenv.
5253
5254 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5257
5258         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5259         generics.
5260
5261 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5262
5263         * local-propagation.c (mono_local_cprop): Avoid local propagation
5264         across paired add/sub if the first instruction dest reg is it's
5265         source reg. For example:
5266
5267         int_add_imm R12 <- R12 [1] clobbers: 1
5268         int_sub_imm R42 <- R12 [1] clobbers: 1
5269
5270         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5271         maintain the math identify.
5272
5273         Fixes #505375.
5274
5275 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5276
5277         * Makefile.am: avoid going on the network just to get the revision,
5278         use git log instead
5279
5280 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5281
5282         Fixed estimate for short branches on amd64 (they were off mark, and
5283         enabling call prolog-epilog instrumentations caused assertions).
5284         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5285         estimate for the maximum length of this basic block.
5286         * mini-amd64.c:
5287         - mono_arch_emit_prolog: compute max_length for each basic block
5288           (instead of max_offset), and inflate size estimate also for entry bb
5289           in case of code instrumentation.
5290         - mono_arch_output_basic_block: get rid of "cpos" (the current
5291           estimated "position" in the code), and always use "offset" instead,
5292           which is accurate; at the beginning of the function quickly recompute
5293           max_offset for all the remaining blocks, starting from the current
5294           cfg->code_len (which is correct, and not estimated) and using the
5295           estimated block lengths computed previously.
5296
5297 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5300         functions, it is already done in the caller.
5301
5302         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5303
5304         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5305         MONO_ARCH_GSHARED_SUPPORTED define.
5306
5307         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5308
5309         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5310         function.
5311
5312 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5313
5314         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5315         call to mono_marshal_get_rgctx_invoke ().
5316
5317         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5318         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5319         gshared use the static rgctx trampolines now.
5320         
5321         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5322         platform supports it.
5323
5324 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5327
5328         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5329
5330 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5333
5334         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5335         for ppc.
5336
5337 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5338
5339         Made it possible for mono_arch_instrument_epilog to preserve
5340         argument registers, otherwise instrumenting the "epilogue" before
5341         a tail call would clobber them.
5342         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5343         if like mono_arch_instrument_epilog but with an additional parameter
5344         that states if argument registers must be preserved.
5345         * mini.c: implemented mono_arch_instrument_epilog as a call to
5346         mono_arch_instrument_epilog_full without asking to preserve argument
5347         registers (this makes the existing code work as usual).
5348         * mini-amd64.c:
5349         - mono_arch_instrument_epilog: add parameter to transform it into
5350         mono_arch_instrument_epilog_full, and preserve argument registers
5351         when required.
5352         - mono_arch_output_basic_block, OP_TAILCALL case: call
5353         mono_arch_instrument_epilog_full.
5354         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5355         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5356         only transformed mono_arch_instrument_epilog into
5357         mono_arch_instrument_epilog_full.
5358
5359 2009-05-15  Geoff Norton  <gnorton@novell.com>
5360
5361         * mini-darwin.c: This works on arm now.
5362
5363 2009-05-14  Geoff Norton  <gnorton@novell.com>
5364
5365         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5366         embedding api.
5367
5368 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5371         label names.
5372
5373         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5374         wrappers during full aot mode correctly.
5375
5376         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5377         methods correctly.
5378
5379         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5380         mono_metadata_type_hash ().
5381
5382 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5383
5384         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5385         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5386         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5387         Removed MONO_INST_BRLABEL from the instruction flags, and the
5388         remaining code that used it, because we do not support branches inside
5389         basic blocks (and branch target labels) anymore.
5390         * Makefile.am: As part of the above cleanup, remove reference to
5391         BURG files which don't exist anymore.
5392
5393 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5396         osx.
5397
5398         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5399         to use mono_arch_throw_corlib_exception.
5400
5401         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5402         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5403
5404         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5405         domain mempool.
5406
5407         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5408
5409         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5410         for the got to make debugging easier and to avoid confusing it with the
5411         system got.
5412         
5413         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5414         method so a breakpoint can be set when using gdb.
5415
5416 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5417
5418         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5419         on mono_method_get_imt_slot ().
5420
5421         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5422         num_decodes variables.
5423
5424         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5425         change as it doesn't seem to work.
5426         
5427         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5428         wrappers.
5429
5430 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5431
5432         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5433         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5434
5435         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5436         builder when using full aot.
5437
5438         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5439         here, it is already handled.
5440         
5441         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5442         correctly for IMT.
5443
5444         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5445
5446         * mini-arm.h: Enable IMT for full aot.
5447         
5448         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5449         arch doesn't support it.
5450
5451         * mini.c (mini_init): Don't disable IMT for full aot if the
5452         architecture supports it.
5453
5454         * mini.h (MonoAotTrampoline): New enum containing the different types
5455         of 'numerous' trampolines.
5456         (MONO_AOT_FILE_VERSION): Bump this.
5457
5458         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5459         static rgctx trampolines. Add support for full-aot IMT thunks.
5460
5461         * mini-amd64.h: Enable IMT for full aot.
5462
5463         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5464         to exclude tests belonging to a category.
5465
5466         * generics.cs: Mark some tests with a !FULLAOT category.
5467
5468         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5469         generics tests.
5470
5471 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5474         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5475         (emit_plt): Fix a warning.
5476
5477 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5480         back into aot-compiler.c to a place where the other functions shared by
5481         the runtime and aot compiler are.
5482         
5483         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5484         as done previously, instead of in MonoAotFileInfo, since pointers might have
5485         alignment requirements.
5486
5487         * mini.h: Bump AOT file format version.
5488
5489 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5490
5491         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5492         that is used at runtime from the aot-compiler.c, this makes it
5493         work on setups that remove the AOT compiler from the output
5494         image. 
5495
5496 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5497
5498         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5499         PPC.
5500
5501         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5502
5503         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5504
5505         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5506         stuff to mono_arch_decompose_long_opts ().
5507         (mono_decompose_opcode): Remove some dead code.
5508
5509 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5510
5511         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5512         cmethod can be null for quite a some reasons.
5513
5514 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5515
5516         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5517
5518 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5519
5520         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5521
5522 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5523
5524         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5525         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5526         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5527         calls returning structures by addr on amd64.
5528
5529         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5530
5531         * iltests.il.in: Restructure the tail call tests a bit.
5532         
5533 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5536         for virtual methods too.
5537
5538 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5539
5540         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5541         due to regression in verifying System.dll.
5542
5543 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5544
5545         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5546         in dynamic methods.
5547
5548         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5549         instances.
5550
5551         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5552         g_str_hash () which can change.
5553
5554         * driver.c (mini_regression): Disable optimizations not supported by
5555         the cpu. Fixes #500019.
5556
5557         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5558         build.
5559
5560 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5561
5562         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5563         to the latest LLVM code.
5564
5565 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5568
5569 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5572         x86/amd64.
5573
5574         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5575         no longer saving offsets, so just save the patch types along with the other
5576         info.
5577         * aot-runtime.c (load_patch_info): Update after the changes to 
5578         encode_patch_list ().
5579         (decode_got_entry): Removed, merged into load_patch_info ().
5580         (is_shared_got_patch): Removed, call the same function from
5581         aot-compiler.c.
5582
5583         * mini.h: Bump aot file format version.
5584         
5585         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5586         half-finished no-dlsym code.
5587
5588         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5589         option.
5590
5591         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5592         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5593
5594 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5597         buffer length to work with AOT code.
5598
5599         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5600         ldfld/stfld opcodes.
5601
5602         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5603         as it is not used.
5604
5605         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5606
5607         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5608
5609         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5610         LLVM API.
5611
5612         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5613         if needed. Don't decompose long operations when using llvm.
5614
5615 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5616
5617         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5618         PAGESIZE constant.
5619
5620         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5621
5622 2009-05-03  Martin Baulig  <martin@ximian.com>
5623
5624         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5625         mono_debugger_insert_method_breakpoint() since the class init
5626         handler we're inserting at the top of the method already gives us
5627         a notification.
5628
5629 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5632         to mono_arch_decompose_long_opts () for x86 and arm.
5633
5634 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5637         TARGET_AMD64 here.
5638
5639 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5640
5641         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5642         JIT code.
5643
5644 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5647         number of trampolines used in full-aot mode.
5648
5649         * aot-compiler.c: Add an ntrampolines option to set the number of 
5650         trampolines emitted in full-aot mode.
5651
5652 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5655         a volatile load. Get rid of get_tempname (), llvm assigns names
5656         automatically.
5657
5658         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5659         builder function.
5660
5661         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5662         a value.
5663
5664         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5665         level 1.
5666
5667         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5668         to the same register as a fixed sreg2. Fixes #497271.
5669
5670         * iltests.il.in: Add a new test.
5671
5672 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5675         stack, since pushes complicate exception handling.
5676
5677         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5678         the stack if they are passed using moves.
5679
5680         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5681
5682         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5683         when using llvm.
5684
5685         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5686         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5687         of FMOVE if it is an R4.
5688
5689 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5692
5693         * mini.h (LLVMCallInfo): New structure to store calling convention 
5694         information for the LLVM back end similar to the CallInfo structures in 
5695         the back-ends.
5696
5697         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5698         call information in a format usable by LLVM.
5699         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5700
5701         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5702         mono_llvm_emit_call () when compiling using LLVM.
5703
5704         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5705         comments to all functions. Fix memory leaks. Add a public init/cleanup
5706         function.
5707
5708         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5709
5710         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5711         mono_array_new_va () jit icall.
5712         
5713 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5714
5715         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5716         multiple machine description files to be specified.
5717         * mini-ops.h: fixes for cross-compilation.
5718
5719 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5720
5721         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5722         some porting work.
5723
5724 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5727         to prevent asserts in various passes. Fixes #497220.
5728
5729 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5732         a racy assert.
5733
5734         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5735         table to avoid duplicates.
5736
5737         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5738         
5739         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5740         option is used.
5741
5742 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5743
5744         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5745         is for method or field access.
5746
5747 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5748
5749         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5750         a Value to stdout.
5751
5752         * mini-llvm.c (mono_llvm_emit_method): Use it.
5753         
5754         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5755         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5756         on volatile values.
5757
5758         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5759         synchronized methods.
5760
5761         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5762
5763         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5764
5765         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5766         OP_LOADI8_MEM.
5767
5768         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5769         allowing some options to be set dynamically.
5770
5771 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5774         unconditional branch.
5775
5776         * mini.h (MonoTrampolineType): Add new trampoline type 
5777         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5778         compiled code.
5779
5780         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5781         function.
5782
5783         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5784         creation function.
5785
5786         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5787         is enabled. Instead, use the llvm vcall trampoline.
5788         
5789         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5790
5791         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5792         
5793         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5794         functions.
5795
5796         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5797         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5798
5799         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5800         OP_IA64_CSET opcode.
5801
5802         * mini.c: Fix a warning.
5803
5804         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5805         THROW to the appropriate llvm type.
5806
5807 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * mini.c (mini_method_compile): Add statistics for methods JITted
5810         with/without LLVM.
5811
5812 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5815         OP_IA64_CMP_<cond>_IMM opcodes.
5816
5817 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5820         corlib exceptions.
5821
5822         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5823         correctly.
5824
5825         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5826         GENERICINST.
5827
5828 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5829
5830         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5831
5832 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5835         support.
5836
5837         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5838         rgctx invoke trampolines for x86.
5839
5840         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5841         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5842         (mono_arch_get_vcall_slot): Simplify this.
5843
5844 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5847         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5848
5849 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5852         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5853
5854         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5855
5856         * liveness.c (visit_bb): Remove a needless assert.
5857
5858 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5861         full aot support to the arch specific code.
5862
5863         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5864
5865         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5866
5867         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5868         
5869         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5870         collect information about the delegate invoke impl trampolines.
5871
5872         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5873         to save trampolines during full-aot mode.
5874
5875         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5876         creation function which returns a trampoline which sets the rgctx
5877         argument.
5878         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5879         wrapper if possible.
5880         (mono_delegate_trampoline): Ditto.
5881
5882         * mini.c (mono_jit_runtime_invoke): Ditto.
5883
5884         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5885         
5886         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5887
5888         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5889         
5890 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5893         just setting the opcode to OP_NOP.
5894
5895 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5896
5897         * mini.c (mini_method_compile): Put the last change inside an 
5898         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5899         
5900         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5901         and extend live ranges to cover the whole method when using xdb.
5902
5903         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5904         do it in the trampolines.
5905
5906         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5907         needed.
5908
5909         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5910         
5911         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5912         call code in full-aot mode since IMT is disabled there.
5913         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5914         new JIT no longer has that restriction.
5915
5916         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5917
5918         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5919         a more compact format.
5920         (mono_aot_wrapper_name): New function to return a unique name for a
5921         wrapper method, also used by the AOT runtime.
5922
5923         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5924         aot-compiler.c.
5925
5926         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5927         when a ICollection<T> etc is encountered.
5928         (add_generic_instances): Process method arguments/locals too.
5929         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5930         trampoline names.
5931
5932         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5933         
5934 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5935
5936         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5937
5938         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5939
5940         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5941         representing the result of the decomposition. Nullify instructions
5942         instead of setting them to OP_NOP since nops can't have registers
5943         set.
5944
5945 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5948         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5949         info. Strip 'mapping symbols' on ARM.
5950
5951         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5952         
5953         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5954         this with the native genmdesc.
5955
5956 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5957
5958         * aot-runtime.c:  Fixing the MSVC build.
5959
5960         Code is contributed under MIT/X11 license.
5961
5962 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5965         JITted code depends on it.
5966
5967 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5968
5969         * aot-compiler.c: Use new MonoGenericParam accessors.
5970
5971 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5972
5973         Reduce memory usage and improve correctness wrt MonoGenericParam
5974         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5975         handing.  Avoid allocating MonoGenericParams, but use the ones in
5976         the container itself.
5977
5978 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5979
5980         * tasklets.c: Return exceptions in the out argument.
5981
5982 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5983
5984         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5985         opcode. Use pointer types in more places instead of casting them to 
5986         integers.
5987
5988         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5989         optimizations.
5990         (mono_llvm_optimize_method): New helper function to optimize a method.
5991
5992         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5993         widening code so it could be called from more places.
5994         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5995         code paths in the call opcodes.
5996
5997 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5998
5999         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
6000
6001 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6002
6003         * dwarfwriter.c: Use _ to separate class name 
6004         components as gdb can't handle '.'. Represent reference variables
6005         as 'class <NAME>&'.
6006         
6007         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
6008
6009         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
6010         
6011         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
6012
6013         * gc-test.cs: New file with GC stack marking tests.
6014         
6015         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
6016         negative numbers for vfp.
6017
6018         * basic-float.cs: Add a test.
6019         
6020 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
6021
6022         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
6023
6024 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
6025
6026         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
6027         part of tasklet/continuation support.
6028
6029 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
6032         amd64 opcodes inside an ifdef.
6033
6034         * dwarfwriter.c: Emit inheritance information for classes, emit fields
6035         of complex types.
6036         
6037         * dwarfwriter.c (emit_type): Emit the class info for classes.
6038
6039 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
6040
6041         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
6042
6043         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
6044
6045         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
6046
6047         * ssa.c (mono_ssa_compute): Fix some memory leaks.
6048
6049 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
6052
6053         * mini-llvm.c: Update comments.
6054
6055         * mini.h (COMPILE_LLVM): New macro.
6056
6057         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
6058
6059         * ssa.c (mono_ssa_compute): Ditto.
6060         
6061         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
6062         the unwind ops from a DWARF FDE.
6063
6064         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
6065         methods by extracting the dwarf unwind ops from the unwind info generated
6066         by LLVM.
6067         
6068         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
6069         calls.
6070
6071         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
6072         addressing modes.
6073
6074 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * Makefile.am (llvm_sources): Enable this.
6077
6078         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
6079         failing back to the JIT if something cannot be handled.
6080
6081         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
6082         compiling with LLVM.
6083
6084         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
6085         compiling with LLVM.
6086
6087         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
6088         compiling with LLVM.
6089
6090         * mini-ops.h: Add a few opcodes needed by LLVM.
6091
6092         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
6093         has no unwind info.
6094
6095         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
6096         backend.
6097
6098         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
6099
6100         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
6101
6102 2009-04-01  Mark Probst  <mark.probst@gmail.com>
6103
6104         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
6105         ridiculously large methods.
6106
6107 2009-03-31  Martin Baulig  <martin@ximian.com>
6108
6109         * debug-debugger.c (debugger_remove_breakpoint): Call
6110         mono_debugger_remove_class_init_callback ().
6111
6112 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
6115         right before emitting code, not at the start.
6116
6117         * mini.c (mono_postprocess_patches): Extract this into a separate function
6118         from mono_codegen ().
6119
6120         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
6121         byref types correctly.
6122
6123 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
6126         by the last change.
6127
6128 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
6131         indirect calls, this avoids problems where get_vcall_slot () would get
6132         confused by the native code for the instruction preceeding the call.
6133         (mono_arch_get_vcall_slot): Simplify this.
6134         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
6135
6136         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
6137         register allocator now seems to depend on them instead of the data in
6138         cpu-<ARCH>.md.
6139
6140         * mini.c (mini_method_compile): Throw the correct type of exception if
6141         mono_method_get_header () fails because of a loading error.
6142
6143 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * mini.c (mini_method_compile): Clear the loader error if the method
6146         header cannot be decoded.
6147
6148         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
6149         interface methods on proxies correctly.
6150
6151         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
6152         this argument for vtype methods. Add precise liveness info for arguments.
6153
6154         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
6155         LIVERANGE_START/END opcodes.
6156
6157         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
6158         for arguments and values in registers.
6159
6160 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
6163         return a valuetype. Fixes #487518.
6164
6165         * iltests.il: Add a test.
6166         
6167         * aot-compiler.c: Use mono_thread_create () to create helper threads.
6168
6169         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
6170         closed over a null reference correctly.
6171
6172 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
6175
6176 2009-03-25  Mark Probst  <mark.probst@gmail.com>
6177
6178         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
6179         allocated to the same registers as fixed sregs.
6180
6181 2009-03-24  Mark Probst  <mark.probst@gmail.com>
6182
6183         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
6184         ATOMIC_CAS_IMM ops.
6185
6186         * method-to-ir.c: Handle more cases for
6187         Interlocked.CompareExchange.
6188
6189         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6190         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6191         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6192
6193 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6194
6195         * aot-runtime.c (decode_method_ref): Fix a warning.
6196
6197         * unwind.c (mono_unwind_frame): Ditto.  
6198
6199 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6200
6201         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6202         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6203
6204         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6205         fix the handling of large values in the ALU_PC_G0_NC relocation.
6206
6207 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6210
6211 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6212
6213         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6214         ops.
6215
6216 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6217
6218         * method-to-ir.c: MINI_OP3 needs a comma.
6219
6220         * method-to-ir.c, mini.h, mini.c: Remove
6221         mono_init_op_sreg_counts ().
6222
6223 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6226         OP_JMP.
6227         
6228         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6229         assertion.
6230
6231         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6232
6233         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6234         code somewhat.
6235
6236 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6237
6238         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6239         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6240         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6241         operations.
6242
6243 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * driver.c: Change location of gc_wrapper.h.
6246
6247         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6248         inside finally clauses correctly. Fixes #485721.
6249
6250         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6251         after the change above.
6252
6253         * exceptions.cs: Add a test.
6254         
6255 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6258
6259         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6260         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6261         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6262
6263         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6264         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6265
6266 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6267
6268         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6269         Simplify logic for ensure_method_is_allowed_to_call_method. 
6270         Handle wrappers on callers.
6271
6272 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6273
6274         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6275         them don't run yet.
6276
6277         * basic-simd.cs: Fix the names of some test methods.
6278
6279 2009-03-18  Geoff Norton  <gnorton@novell.com>
6280
6281         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6282
6283 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6286
6287 2009-03-17  Jb Evain  <jbevain@novell.com>
6288
6289         * driver.c: remove now uneeded call to mono_gc_base_init before
6290         mono_profiler_load.
6291
6292 2009-03-17  Jb Evain  <jbevain@novell.com>
6293
6294         * dwarfwriter.c (token_handler): handle more cases.
6295
6296 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6297
6298         * method-to-ir.c: Remove more dead code (that was required only
6299         because of method_is_safe). Fix compiler warnings.
6300
6301 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6302
6303         * method-to-ir.c: Remove unneeded/useless method_is_safe
6304         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6305
6306 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6307
6308         * mini.c (mini_method_compile): Print the method been compiled with
6309         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6310         for people not familiar with the runtime.
6311
6312 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6315         a managed object which is later put into a GList. Return its class instead.
6316
6317         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6318         stack slots when using sgen.
6319
6320 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6321
6322         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6323
6324 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6325
6326         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6327         > so it works on the first vreg as well.
6328
6329 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6330
6331         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6332         trigger randomly.
6333
6334         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6335         
6336         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6337         implement GArray.
6338
6339 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6340
6341         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6342         native->IL offset mapping.
6343
6344 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6347
6348         * basic.cs: Add a test.
6349
6350 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6351
6352         * mini-x86.c (mono_arch_output_basic_block): Use different
6353         registers in case the ones we want to overwrite are used by the
6354         other operand.  Fixes regression in #480807.
6355
6356 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6359
6360         * dwarfwriter.c (emit_line_number_info): The line number info for
6361         IL code was off by one. Fix that.
6362
6363         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6364         stack.
6365
6366 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6367
6368         Contributed under the terms of the MIT/X11 license by Steven
6369         Munroe <munroesj@us.ibm.com>.
6370
6371         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6372         Fixes #483462.
6373
6374 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6375
6376         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6377         as well.
6378
6379 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6380
6381         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6382         the delegate ctor handling code. Fixes #482638.
6383         
6384         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6385         #481458.
6386
6387         * iltests.il.in: Add a test.
6388         
6389         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6390         mini-posix.c.
6391
6392 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6393
6394         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6395         is shared generic code, return the trampoline, even if the method
6396         has already been compiled.  Fixes #479763.
6397
6398         * mini.c, mini.h: New function
6399         mono_jit_find_compiled_method_with_jit_info() which is the same as
6400         mono_jit_find_compiled_method() but also returns the jit info.
6401
6402 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6403
6404         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6405         for methods which actually have one.  For all other methods, make
6406         sure the this argument var is live the whole method.
6407
6408         * mini.c (mini_method_compile): Every shared method has a
6409         this/vtable/mrgctx info.  Fixes #480807.
6410
6411 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6412
6413         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6414         generic/imt thunks where some entries branch through the vtable,
6415         while other entries branch directly.
6416
6417 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6418
6419         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6420
6421         * mini-windows.c: Ditto.
6422         
6423         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6424         ctors.
6425
6426 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6427
6428         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6429         down an assert.
6430
6431 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6432
6433         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6434         #481403.
6435
6436 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6437
6438         * exceptions-x86.c: Include debug-mini.h - fixes build.
6439
6440 2009-03-04  Martin Baulig  <martin@ximian.com>
6441
6442         * debug-mini.c: Clean up the exception API and add documentation.
6443         (mono_debugger_handle_exception): New public method; this is
6444         called when throwing an exception or encountering an unhandled one.
6445         (mono_debugger_call_exception_handler): Formerly known as
6446         mono_debugger_handle_exception(); this is used to tell the
6447         debugger that we're about to invoke an exception handler.
6448
6449 2009-03-04  Martin Baulig  <martin@ximian.com>
6450
6451         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6452         ../metadata/mono-debug-debugger.c; save and reset exception state.
6453
6454 2009-03-02  Martin Baulig  <martin@ximian.com>
6455
6456         * debug-mini.c: Moved the debugger exception handling here from
6457         ../metadata/mono-debug-debugger.c.
6458
6459         * debug-mini.h
6460         (MonoDebuggerExceptionAction): New exception typedef.
6461
6462         * debug-mini.c
6463         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6464
6465         * exceptions-amd64.c
6466         (mono_amd64_throw_exception): Use the new debugger exception
6467         handling code.
6468
6469         * mini-exceptions.c
6470         (mono_handle_exception_internal): Don't call
6471         mono_debugger_unhandled_exception() here.
6472
6473 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * mini.c aot-compiler.c: Update after the changes to 
6476         mono_marshal_get_runtime_invoke ().
6477
6478         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6479         Virtual generic methods might not have method->slot set, work around
6480         that.
6481
6482         * generics.cs: Add a test.
6483
6484 2009-03-02  Geoff Norton  <gnorton@novell.com>
6485
6486         * mini.c:
6487         * driver.c: Allow signal chaining of SIGFPE as well.
6488
6489 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6492         this since it now receives the method not its generic context in the
6493         IMT reg.
6494
6495         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6496         generic/imt thunks where some entries branch through the vtable, while
6497         other entries branch directly.
6498
6499         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6500
6501         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6502         support for interface methods as well.
6503
6504         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6505         using the normal IMT thunks.
6506
6507         generics.cs: Add new tests.
6508         
6509         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6510         the generic inst to the generic imt thunks. This fixes AOT support, 
6511         improves consistency with the normal IMT thunks, and makes it easier to
6512         add support for interface generic virtual methods later.
6513
6514         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6515         
6516 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6517
6518         * driver.c (mono_set_signal_chaining): New public API function to enable
6519         signal chaining on POSIX platforms.
6520
6521         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6522         (si@lindenlab.com) to implement signal chaining. The original patch was
6523         contributed under the MIT X/11 license:
6524         https://bugzilla.novell.com/show_bug.cgi?id=318894
6525
6526 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6529         too until it can be made to run on amd64.
6530
6531 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6534         to  get_generic_context_from_code () + get_call_info () if possible.
6535
6536 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6537
6538         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6539         suspend-on-sigsegv functionality.
6540
6541         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6542         to suspend when a native SIGSEGV is received. This is useful for debugging
6543         crashes which don't happen under gdb, since a live process contains more
6544         information than a core file.
6545
6546         * mini-exceptions.c (mono_print_thread_dump): Use 
6547         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6548
6549         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6550
6551         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6552         
6553         * basic-float.cs: Disable the tests which currently fail on amd64.
6554
6555         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6556         value to mono_arch_patch_callsite () to fix crashes.
6557         
6558         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6559
6560 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6563         nop code by patching the call address to point to the nullified class init
6564         trampoline, as the former does not seem to be safe on SMP machines.
6565
6566 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6567
6568         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6569         they were wrong.
6570
6571 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6572
6573         * basic-float.cs basic-calls.cs: Fix warnings.
6574
6575 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6576
6577         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6578         correct frame pointer in the LMF.  Should fix #478394.
6579
6580 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6583
6584         * image-writer.c: Make the binary writer less verbose.
6585
6586 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6587
6588         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6589         are called from runtime invoke wrappers.
6590
6591 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * cpu-ppc.md (store_memindex): Increase the size of this.
6594
6595 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6598
6599         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6600
6601         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6602         OP_LCONV_TO_R_UN.
6603
6604         Last fix for of #467201.
6605
6606
6607 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6610
6611         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6612         and long_conv_to_r8_2:
6613
6614         Fixed part of #467201.
6615
6616 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6617
6618         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6619
6620         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6621         conversion to 32 bits.
6622
6623         * cpu-x86.md: Increase the size of int_conv_to_r4.
6624
6625         * basic-float.cs: Add a test for this.
6626
6627         Fixed part of #467201.
6628
6629 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6630
6631         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6632
6633         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6634         conversion to 64 bits.
6635
6636         * basic-float.cs: Add a test for this.
6637
6638         Fixed part of #467201.
6639
6640 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6643
6644         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6645         This behavior is compatible with MS.
6646
6647         * iltest.il.in: Add a test for this.
6648
6649         Fixed part of #467201.
6650
6651 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6652
6653         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6654
6655         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6656         change the precision of the value.
6657
6658         * cpu-x86.md: Define len for float_conv_to_r4.
6659
6660         * basic-float.cs: Add a test for this.
6661
6662         Fixed part of #467201.
6663
6664 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * mini.c: Adjust locking order to the new semantics where the loader lock
6667         comes first.
6668
6669 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6670
6671         * aot-runtime.c:
6672         * mini-amd64.c:
6673         * mini-arm.c:
6674         * mini-ia64.c:
6675         * mini-mips.c:
6676         * mini-ppc.c:
6677         * mini-sparc.c:
6678         * mini-trampolines.c:
6679         * mini-x86.c:
6680         * mini.c:
6681         * tramp-alpha.c:
6682         * tramp-amd64.c:
6683         * tramp-arm.c:
6684         * tramp-hppa.c:
6685         * tramp-ia64.c:
6686         * tramp-mips.c:
6687         * tramp-ppc.c:
6688         * tramp-s390.c:
6689         * tramp-s390x.c:
6690         * tramp-sparc.c:
6691         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6692
6693 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6696         as it is incorrect.
6697
6698 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6701         for cctors if needed.
6702
6703 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6704
6705         * mini-ppc.c: Fix build on Darwin.
6706
6707 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6708
6709         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6710         version instead of 3 as valgrind doesn't like version 3.
6711
6712         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6713
6714         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6715         usable for hashing methods.
6716         (emit_extra_methods): Use the new hash to avoid putting every method in the
6717         same hash bucket.
6718
6719         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6720
6721         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6722         whenever a method ref could match a method.
6723         
6724         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6725         test to fail.
6726         
6727         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6728         methods refs.
6729
6730         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6731
6732         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6733         the encoding buffer.
6734
6735         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6736         mono_method_get_header () on inflated methods as an optimization.
6737
6738 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6739
6740         * ssa.c (fold_ins): Fix another crash if the instruction following the
6741         switch was optimized away.
6742
6743 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6744
6745         Contributed under the terms of the MIT/X11 license by Steven
6746         Munroe <munroesj@us.ibm.com>.
6747
6748         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6749
6750 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6751
6752         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6753         around the mono_domain_alloc calls, it is now done by the functions
6754         themselves.
6755
6756         * aot-compiler.c (compile_method): Only add wrappers referenced by
6757         the method if compiling with full AOT.
6758         (mono_compile_assembly): Error out if --aot=full is specified on
6759         a platform where it is not supported.
6760
6761         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6762         on ARM too.
6763
6764         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6765         AOT support.
6766
6767         * aot-runtime.c (load_named_code): Handle 
6768         mono_arm_throw_exception_by_token.
6769
6770         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6771
6772         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6773         unaligned.
6774
6775         * Makefile.am (fullaotcheck): Exit if a test fails.
6776
6777         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6778         on ARM.
6779         (mono_compile_assembly): Handle the assembler failing.
6780
6781         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6782         accepting subsections of .bss.
6783
6784         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6785         was optimized away.
6786
6787         * aot-compiler.c: Remove some unused includes.
6788         
6789         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6790         now in MonoImageWriter.
6791
6792         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6793         code sequence which matches a non-virtual call. Fixes #472654.
6794
6795 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6796
6797         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6798         xdebug code.
6799         
6800         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6801         use the image/dwarf writers directly.
6802
6803         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6804         field.
6805
6806         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6807         MonoDwarfWriter.
6808
6809         * image-writer.h: Fix some typos.
6810
6811         * dwarfwriter.h dwarfwriter.c: New files.
6812         
6813         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6814         separate module.
6815
6816         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6817         argument to return unwind info.
6818
6819         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6820
6821         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6822         
6823         * aot-runtime.c (decode_method_ref): Add a case for 
6824         MONO_AOT_METHODREF_WRAPPER_NAME.
6825
6826         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6827         for AOT.
6828
6829         * aot-compiler.c (encode_method_ref): Use the new constants.
6830
6831         * aot-runtime.c (decode_method_ref): Ditto.
6832
6833         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6834         be compiled, not the icall itself.
6835
6836 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6837
6838         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6839         using decode_method_ref ().
6840
6841         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6842         convert it to an in32. Fixes #475859.
6843
6844         * arrays.cs: Add a test.
6845
6846 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6847
6848         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6849         OP_LCONV_TO_U2.
6850
6851         * basic-long.cs: Add a test.
6852
6853 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6854
6855         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6856         remove the frame pointer in leaf methods which don't receive any
6857         arguments, don't throw exceptions and don't do dynamic stack
6858         allocations.
6859
6860 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6861
6862         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6863         the fail_tramp changes. Hopefully fixes #475132.
6864
6865 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6866
6867         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6868         instead of mono_metadata_signature_dup_full.
6869
6870 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6871
6872         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6873         for processing jump tables. Fixes #473787.
6874
6875 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6876
6877         * mini-generic-sharing.c: mini_method_get_context() just calls
6878         mono_method_get_context_general() now.
6879
6880         * mini.c, mini.h: Moved get_object_generic_inst(),
6881         construct_object_context_for_method() and
6882         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6883
6884 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6887         basic block fell through to its successor bblock without a branch. Fixes
6888         #474718.
6889
6890         * iltests.il.in: Add a test.
6891         
6892         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6893         (can_encode_patch): We can now handle arrays of generic parameters and
6894         array methods.
6895
6896         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6897
6898         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6899         the AOT file to avoid some #ifdefs in aot-runtime.c
6900
6901         * mini.h: Bump AOT file format version.
6902
6903 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6904
6905         * Makefile.am (fullaotcheck): Make this run the tests.
6906
6907         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6908
6909 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6910
6911         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6912         individually.  Fixes #473482.
6913
6914 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6915
6916         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6917
6918 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6919
6920         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6921         (mono_compile_assembly): Hush compile warnings about
6922         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6923         code path.
6924
6925 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6926
6927         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6928
6929         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6930
6931         * aot-compiler.c: Fix arm support.
6932
6933         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6934         img_writer_emit_unset_mode () function.
6935
6936         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6937         (mono_unwind_get_dwarf_pc_reg): Ditto.
6938
6939         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6940         Move almost all platform specific code to a set of arch_ functions, 
6941         and document them to ease porting.
6942         
6943         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6944
6945         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6946
6947         * aot-compiler.c: Extract the image writing functionality into a separate
6948         module to reduce the size of this file.
6949
6950 2009-02-09  Geoff Norton  <gnorton@novell.com>
6951
6952         * mini-s390.c: Fix the signature of emit_sig_cookie.
6953
6954 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6957
6958         * aot-runtime.c (is_shared_got_patch): Ditto.
6959
6960         * aot-runtime.c (load_named_code): Cope with the fact that 
6961         decode_got_entry () won't decode the patch fully if its corresponding got
6962         entry is already filled.
6963         
6964         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6965         Initialize *ji.
6966         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6967
6968         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6969         as the moving pointer instead of 'buf' for consistency with the rest of the
6970         codebase.
6971         (mono_arch_create_monitor_exit_trampoline): Ditto.
6972
6973         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6974         generic_class_init trampolines.
6975         (add_generic_class): Extract some code from add_generic_instances () into a
6976         separate function so it can be called from other places too.
6977         (compile_method): Call add_generic_class () for the classes of inflated methods
6978         referenced by the method.
6979         (can_encode_patch): Allow references to generic parameters.
6980
6981         * aot-runtime.c: Add support the patches required by the new trampolines.
6982         
6983         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6984         support.
6985
6986         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6987         full-aot support.
6988
6989         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6990         this from get_throw_pending_exception, make the signature full aot compatible.
6991
6992         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6993
6994         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6995
6996         * exceptions.cs: Add a test.
6997
6998 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6999
7000         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
7001         use the DWARF_DATA_ALIGN constant instead.
7002
7003         * exception-<ARCH>.c: Update after the above change.
7004
7005         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
7006         dwarf unwinder.
7007
7008         * mini-arm.c: Enable the dwarf unwinder.
7009
7010         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
7011         instead of mono_class_setup_vtable ().
7012
7013 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7014
7015         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
7016         dwarf unwinder.
7017
7018         * mini-x86.h: Enable the dwarf unwinder.
7019
7020 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
7021
7022         Fix mcs/tests/test-7.cs
7023         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
7024         2009-02-03.
7025
7026 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7027
7028         * mini.c (print_jit_stats): Remove some unused statistics.
7029
7030 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7031
7032         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
7033
7034 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7035
7036         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
7037         the method we get from mono_object_get_virtual_method() because
7038         that function does it properly, now.
7039
7040 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
7043         opcodes. Fixes #472775.
7044
7045 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7046
7047         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
7048         fact that mono_find_jit_info() sometimes returns the context
7049         corresponding to the jit info in new_ctx.  Fixes #472600.
7050
7051 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7052
7053         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
7054         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
7055         klass->enum_basetype directly.
7056
7057         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
7058         enum subtypes.
7059
7060         * unwind.c: Avoid 0 sized arrays.
7061
7062 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
7065         size on systems with 64k pages. Fixes #471389.
7066
7067 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7068
7069         Contributed under the terms of the MIT/X11 license by Steven
7070         Munroe <munroesj@us.ibm.com>.
7071
7072         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
7073         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
7074         necessary.
7075
7076 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7077
7078         Contributed under the terms of the MIT/X11 license by Steven
7079         Munroe <munroesj@us.ibm.com>.
7080
7081         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
7082         comparison fix.
7083
7084         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
7085         The trampoline can be longer on PPC64.
7086
7087 2009-02-04  Mark Probst  <mark.probst@gmail.com>
7088
7089         Contributed under the terms of the MIT/X11 license by Steven
7090         Munroe <munroesj@us.ibm.com>.
7091
7092         * mini-ppc.c: Compiler warning fixes and trivial code
7093         simplifications.
7094
7095 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7096
7097         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
7098         ins->dreg which could be a hardware register, not a vreg.
7099
7100         * aot-compiler.c (emit_method_dwarf_info): Ditto.
7101         
7102         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
7103         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
7104
7105         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
7106         
7107         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
7108         ->dreg, that is not the vreg we are looking for.
7109
7110         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
7111
7112         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
7113         LIVERANGE_END.
7114
7115         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
7116         strange crashes.
7117
7118 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
7119
7120         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
7121
7122         * aot-compiler.c (emit_line_number_info): Fix line number emission when
7123         the line diff is 0.
7124
7125         * aot-compiler.c: Add xdebug support on x86.
7126
7127         * unwind.c: Add x86 support.
7128         
7129         * aot-compiler.c (emit_exception_debug_info): Control the emission of
7130         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
7131
7132         * mini.c (mini_method_compile): Ditto.
7133         
7134         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
7135         the variable index.
7136
7137         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
7138         which mimic .push_section/.pop_section in GAS.
7139         
7140         * aot-compiler.c: Emit precise live range information for variables.
7141
7142         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
7143
7144         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
7145         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
7146         them.
7147
7148         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
7149         the live ranges of variables.
7150
7151         * mini.h (struct MonoMethodVar): Add two fields containing the live range
7152         of the variable in terms of native offsets.
7153
7154 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
7155
7156         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
7157         
7158 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7159
7160         Contributed under the terms of the MIT/X11 license by Steven
7161         Munroe <munroesj@us.ibm.com>.
7162
7163         * exceptions-ppc.c (restore_regs_from_context): Correct operand
7164         order (offset then base reg) for ppc_load_multiple_regs.
7165         (emit_save_saved_regs) Correct operand order for
7166         ppc_store_multiple_regs.
7167         (mono_arch_get_call_filter): Correct operand order for
7168         ppc_load_multiple_regs.
7169
7170         * mini-ppc.c (emit_memcpy): Fix operand order for
7171         ppc_load_reg_update and ppc_store_reg_update.
7172         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
7173         (mono_arch_emit_epilog): Correct operand order for
7174         ppc_load_multiple_regs.
7175
7176         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
7177         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
7178
7179 2009-02-02  Mark Probst  <mark.probst@gmail.com>
7180
7181         * cpu-ppc64.md: Fixed storer4_memindex length.
7182
7183 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
7184
7185         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
7186         line number info.
7187         
7188         * aot-compiler.c (emit_line_number_info): Optimize this.
7189
7190 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7193         
7194         * aot-compiler.c: Add debug info for methods without debug info by
7195         emitting an IL file and having the line number info referencing that file.
7196
7197         * aot-compiler.c: Optimize the size of the generated line number info.
7198
7199         * aot-compiler.c: Emit line number info in xdebug mode.
7200
7201         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7202         million arguments.
7203
7204 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7207
7208         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7209         is used.
7210
7211 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7212
7213         * basic-calls.cs: Test for the weird crash found on arm.
7214         
7215 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7216
7217         * cpu-arm.md: Increase the size of storer8_membase_reg and
7218         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7219
7220         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7221         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7222         reg to LR otherwise we'll be loading/storing from just the offset.
7223
7224 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7225
7226         Question: if we are storing gint32's inside the "*native_offset",
7227         should we change the signature to "gint32 *native_offset" to
7228         ensure that we do not have type definition problems?
7229         
7230         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7231         an int * as this is what the other function expects, causes
7232         problems with Freescale's compiler that defined int32_t to be a
7233         long and makes int incompatible 
7234
7235 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7236
7237         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7238         filename conflict with bjam.
7239
7240 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7243         as it might use decomposed ops.
7244
7245 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7246
7247         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7248
7249         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7250         is defined.
7251
7252         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7253
7254         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7255         offsets.
7256
7257         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7258         way registers are stored in MonoContext on arm.
7259
7260         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7261         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7262
7263         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7264
7265         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7266
7267         * mini.c (mini_init): Register mono_isfinite.
7268
7269         * jit-icalls.c (mono_isfinite): New jit icall.
7270
7271         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7272         
7273         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7274         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7275         the parent frame.
7276
7277 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7278
7279         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7280         separate frame and stack pointers, so we must use FP to find the register
7281         spill area.
7282         The FP reg is retrieved from the MonoContext::regs array.
7283
7284 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7287         as FPA requires it.
7288
7289 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7292         return R4 and R8 when not running under softfloat.
7293
7294         Fixes basic-calls.exe
7295
7296 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * mini-arm.c: Implement some overflow opcodes.
7299
7300 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7301
7302         * ssa.c: handle another alloca.h
7303
7304         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7305         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7306         MONO_ARCH_USE_SIGACTION. 
7307
7308         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7309         capability defines.
7310
7311         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7312
7313         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7314         PPC targets as sigaction does not exist on all platforms, define
7315         this on a per-platform basis.
7316
7317         Instead of erroring out if the platform is not defined, include
7318         mini-ppc-os.h, and expect that the OS specific setting provides
7319         the required information.   
7320
7321 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * aot-compiler.c: Fix --enable-minimal=aot.
7324
7325 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7328         previous change.
7329
7330 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7331
7332         * exceptions-arm.c: Fix warnings.
7333
7334         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7335         ARM.
7336
7337         * mini-x86.c: Fix --enable-minimal=jit build.
7338
7339         * mini.c: Really fix --enable-minimal=jit build.
7340         
7341         * mini.c (construct_object_context_for_method): Move this outside
7342         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7343
7344         "Backported" of r124984 from 2.0 branch.
7345         
7346         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7347
7348         "Backport" of r124977 + r124978 from 2.0 branch.
7349         
7350         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7351         to avoid calling mono_exception_from_token () from the throw trampoline.
7352         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7353         for throwing corlib exceptions, this fixes full-aot support for corlib
7354         exceptions.
7355
7356         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7357
7358 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7359
7360         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7361         part of the changes to split the code in mini into operating
7362         system specific files.
7363
7364         This patch was done by copying mini.c to the respective files to
7365         preserve SVN history.
7366
7367 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7370
7371 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7372
7373         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7374         remoting-invoke-with-check wrappers of shared methods.
7375
7376         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7377
7378 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7379
7380         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7381         optimization if the top of stack is the last instruction in the
7382         bblock.  Otherwise it might have been used after its definition.
7383         Fixes #469742.
7384
7385 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7386
7387         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7388         method as well when get_vcall_slot () fails to match a code sequence.
7389
7390         * mini-arm.c: Fix the android build, which doesn't have
7391         __aeabi_read_tp.
7392
7393 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7396         the s390x build.
7397
7398 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7401
7402 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7405         and put its id into jinfo->used_regs. This is only used on amd64,
7406         which is currently the only platform generating unwind info.
7407
7408         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7409         the dwarf unwinder. This is required to correctly handle async exceptions
7410         like thread abort and stack overflows, which can happen while a method
7411         is in the middle of its prolog or epilog.
7412         
7413         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7414         the unwind info belonging to an AOTed method.
7415
7416         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7417         into cfg->unwind_ops.
7418         
7419         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7420
7421         * mini.c (mini_init): Call mono_unwind_init ().
7422         (mini_cleanup): Call mono_unwind_cleanup ().
7423
7424         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7425         unwind info to be shared between methods.
7426
7427         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7428         saved in the LMF.
7429
7430         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7431         get_throw_pending_exception () to avoid initialization races.
7432
7433         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7434         mono_arch_exceptions_init () function.
7435
7436         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7437
7438 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * mini.c (mono_get_domain_intrinsic): New helper function.
7441         (mono_get_thread_intrinsic): Ditto.
7442
7443         * mini-arm.c mini-ia64.c: Use the new helper functions.
7444         
7445         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7446         the last constrained_call change, since it is needed in the non-AOT
7447         case as well.
7448
7449         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7450         
7451         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7452         mono_get_lmf_addr () on arm eabi linux.
7453
7454 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7455
7456         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7457         code sequence which matches a non-virtual call.
7458
7459 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7460
7461         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7462         stack pointer (r1).
7463
7464 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7467         runtime-invoke wrappers, since they are also shared based on signature.
7468
7469 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7470
7471         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7472         info from the (correct) context.
7473
7474 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7477         
7478         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7479         using dwarf unwinding info. Not yet used.
7480
7481         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7482
7483 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7484
7485         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7486         descriptors.
7487
7488         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7489         special case and handle mono_arch_delegate_invoke_impl() returning
7490         function descriptors.
7491
7492         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7493         trampolines return function descriptors, too.
7494
7495 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7498         out_of_line optimization.
7499
7500 2009-01-21  Martin Baulig  <martin@ximian.com>
7501
7502         * mini.h
7503         (MonoCompile): Added `disable_deadce_vars' to disable removing
7504         unused variables.
7505
7506         * mini.c
7507         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7508         inside the debugger.
7509
7510         * liveness.c (mono_analyze_liveness): Don't remove any unused
7511         variables if `cfg->disable_deadce_vars' is set.
7512
7513 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7514
7515         * method-to-ir.c: Only apply exception constructor optimization if
7516         the the method actually belongs to an exception class.  Fixes
7517         #467456.
7518
7519 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7522         change inside a #ifdef __mono_ppc64__.
7523
7524         * aot-compiler.c (compile_method): Remove the previous limitation.
7525
7526         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7527         on type variables in AOTed code.
7528         
7529         * aot-compiler.c (compile_method): Skip generic methods having type 
7530         constraints on their generic parameters.
7531
7532         * aot-compiler.c (compile_method): Check for methods which cannot be
7533         encoded inside RGCTX_FETCH patches as well.
7534
7535         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7536         build.
7537
7538 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7539
7540         * method-to-ir.c: Force the vtable variable in shared generic code
7541         for the case that they might show up on a stack trace where they
7542         are needed.
7543
7544         * mini-exceptions.c: Save and use generic sharing info as well as
7545         IP in stack traces to resolve shared generic instantiations.
7546
7547 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7550         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7551
7552 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7553
7554         * method-to-ir.c: Do generic sharing for array constructors.
7555
7556 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7557
7558         * mini-exceptions.c (mono_print_thread_dump): Add information
7559         about the thread state using wapi_current_thread_desc.
7560
7561 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7562
7563         * basic-simd.cs: Tests for the new constructors. 
7564
7565 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7566
7567         * mini-ops.h: Added OP_EXPAND_*
7568
7569         * cpu-x86.md: Same.
7570
7571         * mini-x86.c (mono_arch_output_basic_block): Same.
7572         
7573         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7574
7575 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * iltests.il.in: Add a test for #467385.
7578
7579 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7580
7581         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7582         thread been cleaned up is not the same currently in execution.
7583
7584         Fixes appdomain-unload crashes on windows, osx and linux variants
7585         without the __thread keyword.
7586
7587 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7590         (koush@koushikdutta.com). Implement this for android.
7591
7592         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7593         begins with a digit.
7594
7595         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7596         mono_marshal_get_write_barrier ().
7597
7598 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7599
7600         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7601         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7602         that pass them on a register pair.
7603
7604         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7605         test was crashing due to that.
7606
7607 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7608
7609         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7610         trampoline code. Include ucontext.h only if available.
7611
7612 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7613
7614         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7615         and doesn't check whether it's sharable, like it was before
7616         removing the shared generics hash.  This brings IronPython
7617         performance back to what it was before that change.
7618
7619 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7620
7621         * method-to-ir.c: Handle delegate invocation optimization earlier,
7622         otherwise it would be handled (much more slowly) by the
7623         final/sealed optimization.
7624
7625 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7628         domain is not set. Fixes #465864.
7629
7630 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7631
7632         * method-to-ir.c: Don't stop sharing of generic methods with catch
7633         clauses - we already handle those.
7634
7635 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7636
7637         * mini.c, mini.h: lookup_generic_method() is now
7638         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7639         making the shared_generics_hash obsolete.
7640
7641 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7642
7643         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7644         use the red zone.  Make room on the stack first and then use it,
7645         not the other way around.
7646
7647 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7648
7649         * mini.c (mini_init): Call mono_xdebug_init ().
7650
7651         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7652
7653 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7656
7657         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7658         trampolines.
7659
7660         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7661         debug+unwind info for trampolines.
7662
7663         * mini.c (mono_create_unwind_op): New helper function.
7664
7665         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7666
7667 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7668
7669         * aot-compiler.c: Fix the build.
7670
7671 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * Makefile.am: Update dtrace-prelink.sh location.
7674
7675 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7678         optimization. Fixes #464520.
7679
7680 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7681
7682         * mini-amd64.c : Adding code to save/restore non-volatile registers
7683            on Winx64.
7684
7685         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7686           registers on Winx64.
7687
7688         Contributed under MIT/X11 license.
7689
7690 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7691
7692         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7693         __GNUC_MINOR__ which can break when the major version changes.
7694
7695 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7696
7697         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7698
7699 2009-01-07  Geoff Norton  <gnorton@novell.com>
7700
7701         * helpers.c:  Allow mono -v -v -v to work on darwin.
7702
7703 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7704
7705         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7706           pattern. 
7707
7708         Contributed under MIT/X11 license.
7709
7710 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7711
7712         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7713         instead of directly accessing type->data.klass. Fixes #462016.
7714         (mono_allocate_stack_slots_full): Ditto.
7715
7716         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7717         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7718
7719         * aot-compiler.c (emit_plt): Fix ARM build.
7720
7721 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7724         
7725         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7726         change.
7727
7728         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7729         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7730         #463357.
7731
7732         * iltests.il.in: Add a regression test.
7733
7734 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7735
7736         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7737
7738 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7739
7740         * basic-simd.cs: Add a regression test for #462457.
7741
7742 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7743
7744         * mini-ops.h: Add a definition of XPHI.
7745
7746         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7747
7748         * ssa.c (op_phi_to_move): Handle XPHI.
7749
7750         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7751
7752         Fixes #462457
7753
7754 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7757
7758 2008-12-31  Geoff Norton  <gnorton@novell.com>
7759
7760         * mini-ppc.c: The prolog size allocated can be too small for darwin
7761         ppc32 under certain circumstances.  Also fix a small logic bug.
7762
7763 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7766         while loading AOT methods.
7767
7768         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7769         since only the former is nulled out after a successful cast. This prevents
7770         crashes with rethrown exceptions when using --debug=casts.
7771
7772 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7773
7774         * mini.h: New macro for checking whether a method is final,
7775         i.e. whether the method or its class is marked final.
7776
7777         * method-to-ir.c: Use the new macro for all final-checks
7778         consistently.  Fixes the crash in the System.ServiceModel tests.
7779
7780 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7781
7782         * mini-exceptions.c (get_exception_catch_class): Corrected another
7783         overly strict assertion.
7784
7785 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7786
7787         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7788         Clobbering it is not allowed because the caller might use it as
7789         the vtable register in the interface call.
7790
7791 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7792
7793         * mini-exceptions.c (get_exception_catch_class): Corrected an
7794         overly strict assertion.
7795
7796 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7797         
7798         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7799
7800         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7801
7802         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7803
7804         * cpu-mips.md: correct lengths for certain long_ opcodes.
7805
7806         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7807
7808         * 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().
7809         
7810 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7811
7812         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7813         
7814 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7815         
7816         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7817         
7818 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7821         next basic block.
7822         
7823 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7824
7825         * 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
7826
7827         * 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)
7828         
7829 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7830         
7831         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7832         
7833 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7836         gshared code. Fixes #458947.
7837
7838         * generics.cs: Add a test.
7839
7840 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7841         
7842         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7843         
7844         * mini-mips.c: first pass n32 code generation.
7845
7846         * mini-mips.h: datatypes and defines for n32 support.
7847
7848         * exceptions-mips.c: first pass n32 code generation.
7849         
7850         * tramp-mips.c: first pass n32 code generation.
7851         
7852         * cpu-mips.md: add long_ opcodes.
7853         
7854 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7855
7856         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7857
7858         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7859         
7860         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7861         
7862         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7863
7864         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7865
7866         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7867
7868         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7869
7870         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7871
7872         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7873
7874 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7877
7878 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7879
7880         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7881
7882 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7883
7884         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7885         descriptors for helper functions directly in front of the code.
7886
7887 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7888
7889         * method-to-ir.c: Removed an unnecessary assertion.
7890
7891 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7892
7893         * method-to-ir.c: Merge SGEN changes from the old JIT.
7894
7895 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * driver.c (compile_all_methods_thread_main): Handle failure of
7898         mono_get_method ().
7899
7900 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7901
7902         * mini-ppc.c: Merged with mini-ppc64.c.
7903
7904         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7905
7906         * Makefile.am: Use the same sources for PPC and PPC64.
7907
7908         * mini-ppc64.c: Removed.
7909
7910 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7911
7912         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7913         code to mono_bb_is_fall_through.
7914         
7915         * branch-opts.c (mono_remove_critical_edges): Same.
7916
7917 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7918
7919         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7920         expect that an OP_BR_REG will be there.
7921
7922 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7923
7924         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7925         for the many branch ops. The original check miss OP_BR_REG.
7926
7927         Fixes #457574.
7928         
7929 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7930
7931         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7932
7933 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7936         while holding the aot lock.
7937
7938 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7939
7940         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7941         
7942 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7943
7944         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7945           to release all runtime callable wrappers held by the runtime.
7946
7947         Contributed under MIT/X11 license.
7948
7949 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7950
7951         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7952           for Winx64.
7953
7954         Contributed under MIT/X11 license.
7955
7956 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7957
7958         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7959         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7960
7961 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7962
7963         * cpu-mips.md: fix ckfinite length
7964
7965         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7966         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7967         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7968         
7969 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7970
7971         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7972         
7973 2008-12-08  Geoff Norton  <gnorton@novell.com>
7974
7975         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7976         size by 8 bytes as well.
7977
7978 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7979
7980         * basic-simd.cs: Fix method names for Vector16b.
7981         
7982 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7983
7984         * basic-simd.cs: Fix method names for Vector16sb.
7985
7986 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7987
7988         * basic-simd.cs: Fix method names for Vector8us.
7989         
7990 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7991
7992         * basic-simd.cs: Fix method names for Vector8s.
7993         
7994 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7995
7996         * basic-simd.cs: Fix method names for Vector4ui.
7997
7998 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7999
8000         * basic-simd.cs: Fix method names for Vector2l.
8001
8002 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8003
8004         * basic-simd.cs: Fix method names for Vector2d.
8005
8006 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8007
8008         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
8009         that are extension methods.
8010
8011 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * basic-simd.cs: Fix method names for Vector4f.
8014
8015 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
8018         as such. Fixes #456669.
8019
8020 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8021
8022         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
8023         
8024 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
8025
8026         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
8027         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
8028         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
8029         (mips_adjust_stackframe): handle FP spills
8030                 
8031         * mini-ops.h: add mips_mtc1_s2
8032         
8033         * cpu-mips.md: add mips_mtc1_s2
8034         
8035 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
8036
8037         * unwind.c: New file, move the unwind info encoding functions here from
8038         aot-compiler.c, so they could be used at runtime too.
8039
8040 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8041
8042         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
8043         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
8044         
8045 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
8046
8047         * mini-mips.c: cleanup warnings
8048         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
8049         (mips_adjust_stackframe): handle case of taking the address of stack locals
8050         
8051 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8052
8053         * aot-compiler.c: Implement a few functions missing from the asm writer.
8054         (emit_method_code): Only write symbols for methods when using the bin
8055         writer, since the assembler can't deal with the characters in our method
8056         names.
8057
8058         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
8059
8060         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
8061         call.
8062
8063         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
8064         a bit to also restore %rax.
8065
8066 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8067
8068         * mini-ppc.c: Some simple merges from mini-ppc64.c.
8069
8070 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
8073         arguments.
8074
8075 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8076
8077         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
8078
8079         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
8080         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
8081
8082         * exceptions-ppc64.c: Removed.
8083
8084         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
8085
8086 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8087
8088         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
8089         tramp-ppc64.c.
8090
8091         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
8092
8093         * tramp-ppc64.c: Removed.
8094
8095 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
8098         the TYPESPEC table.
8099
8100 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8101
8102         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
8103
8104         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
8105         mini-ppc.h instead of mini-ppc64.h.
8106
8107         * mini-ppc64.h: Removed.
8108
8109 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8110
8111         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
8112         
8113         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
8114         
8115 2008-12-05  Mark Probst  <mark.probst@gmail.com>
8116
8117         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
8118         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
8119         code easier.
8120
8121 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
8124
8125 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8126
8127         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
8128
8129 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8130
8131         * basic-simd.cs: Tests for operator == and != on Vector4f.
8132
8133 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8134
8135         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
8136
8137         * simd-intrinsics.c: Kill useless enum.
8138
8139 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8140
8141         * cpu-mips.md: add long_conv_to_ovf_i4_2
8142         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
8143
8144 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8145
8146         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
8147         
8148         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
8149
8150 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8151
8152         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
8153         
8154 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8155
8156         * basic-simd.cs: Add tests for new methods.
8157
8158 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8159
8160         * simd-intrinsics.c: Add support for operator == and !=
8161         on Vector4(u)i.
8162
8163         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
8164
8165 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
8168
8169 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8170
8171         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
8172
8173         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
8174         MONO_PATCH_INFO_ICALL_ADDR.
8175
8176         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
8177
8178         * aot-compiler.c: Resurrect full-aot support.
8179
8180 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8181
8182         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
8183         
8184 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
8185
8186         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
8187         
8188 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8189
8190         * basic-simd.cs: Fix tests to work under ppc.
8191         Remove tests for methods that will be removed.
8192
8193 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8194
8195         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8196         generic type (via a typedef or typeref) correctly.
8197
8198 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8199
8200         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8201         diagnose an assertion failure.
8202
8203 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8204
8205         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8206         Fix trampoline size.
8207
8208         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8209         conversion opcodes are implemented natively instead via emulation.
8210
8211 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8212
8213         * cpu-mips.md: remove mips_xori
8214
8215         * mini-ops.h:  remove mips_xori
8216
8217         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8218
8219         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8220         
8221         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8222         
8223 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8224
8225         * cpu-mips.md: fix instruction lengths.
8226
8227         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8228
8229         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8230
8231         * mini-ops.h: fix slti / sltiu op profiles.
8232         
8233 2008-12-02  Martin Baulig  <martin@ximian.com>
8234
8235         * method-to-ir.c (mono_method_to_ir): Disable debugging
8236         information for the init locals block to make the debugger stop
8237         after all locals have been initalized.
8238
8239 2008-12-02  Martin Baulig  <martin@ximian.com>
8240
8241         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8242         running inside the debugger.
8243
8244 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8247         is enabled.
8248
8249         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8250         alu->alu imm optimization which only shows if deadce is disabled.
8251
8252         * aot-compiler.c: Rename the function names for the binary and asm writers
8253         so they can coexist in the same process. Rework the xdebug code to use the
8254         asm writer. This avoids the need to call into the runtime to dump the
8255         debugging info. Add more debugging info for types.
8256
8257         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8258
8259         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8260         cpu description tables, they can't occur in cpu-<ARCH>.md.
8261
8262         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8263         the stack in CEE_LDFLDA. Fixes #450542.
8264
8265         * generics.cs: Add a new test.
8266
8267 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8268
8269         * mini-ops.h: updated MIPS opcodes
8270         * mini-mips.c: decompose long opts
8271         * mini-mips.h: decompose long opts
8272         
8273 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8274
8275         * cpu-mips.md: fix length on int_rem_un
8276         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8277         
8278 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8279
8280         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8281
8282         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8283
8284 2008-11-29  Martin Baulig  <martin@ximian.com>
8285
8286         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8287         mono_debug_using_mono_debugger() in addition to the
8288         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8289
8290 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8291
8292         * mini-ops.h: updated more MIPS opcodes
8293         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8294         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8295         
8296 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8297
8298         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8299
8300 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8301
8302         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8303         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8304         * mini-ops.h: correct selected mips opcode entries
8305         
8306 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8307
8308         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8309         make them work.
8310
8311 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8312
8313         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8314
8315 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8316
8317         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8318         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8319         * mini-mips.h: disable IMT
8320         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8321         
8322 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8323
8324         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8325
8326 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8327
8328         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8329
8330 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8331
8332         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8333         consistency.
8334
8335 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8336
8337         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8338         for Set/GetVector aligned versions.
8339
8340 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8341
8342         * basic-simd.cs: Add tests for Get/SetVector.
8343
8344 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8345
8346         * mini.c: Removed g_slist_append_mempool().  Now in
8347         metadata/mempool.c.
8348
8349 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8350
8351         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8352         size properly and make the bounds check optional.
8353
8354         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8355         for SetVector and IsAligned.
8356
8357 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8358
8359         * mini.c: Remove unused mono_normalize_opcodes () function.
8360
8361 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8362
8363         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8364         using the new atomic add ops now.
8365
8366         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8367         add.
8368
8369 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8370
8371         * mini-ppc64.c: Several fixes.
8372
8373 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8374
8375         * cpu-mips.md: added jump_table
8376         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8377
8378 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8379
8380         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8381
8382 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8383
8384         * mini-ops.h: corrected a handful of MIPS opcodes.
8385
8386 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8387
8388         * aot-compiler.c: MIPS to use ELF writer
8389
8390 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8391
8392         * mini-codegen.c: remove MIPS specific assert.
8393
8394 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8395
8396         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8397         fixes.  PPC64 now passes most of the runtime regressions.
8398
8399 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8400
8401         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8402         volatile intervals a bit.
8403
8404 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8405
8406         * basic-long.cs: New test case.
8407
8408 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * mini.c (mini_method_compile): Disable globalra for large methods for 
8411         now.
8412
8413         * regalloc2.c (order_moves): Add fp support.
8414
8415         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8416         source bblock ends with an OP_BR_REG.
8417
8418         * ratests.cs: Add a new test.
8419
8420 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8421
8422         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8423         sharing.  PPC64 now passes generics.exe.
8424
8425 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8426
8427         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8428
8429 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8432         memory when mono_jit_info_table_find () can't find the method in the
8433         LMF case.
8434
8435         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8436         AOTed code too.
8437         
8438         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8439         writer too.
8440
8441 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8442
8443         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8444         Several fixes.  PPC64 now runs exceptions.exe and
8445         devirtualization.exe.
8446
8447 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8448
8449         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8450         arrays.exe and basic-math.exe.
8451
8452 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8453
8454         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8455         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8456
8457 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8458
8459         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8460
8461 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8464
8465         * ir-emit.h: Move macros from method-to-ir.c to here.
8466
8467 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8468
8469         * mini-ops.h: Correct the long simd ops to use LREG.
8470
8471 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8472
8473         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8474         
8475         * mini-ops.h: Correct the dreg type of a few long opcodes.
8476
8477         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8478         Add netbsd support.
8479
8480 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8481
8482         * mini-ppc.c: remove negative stack references in epilog
8483         for platforms that don't support the red zone.
8484
8485 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8486
8487         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8488         point regs.  Now PPC64 passes basic-calls.exe.
8489
8490 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * basic-simd.cs: Add tests for accessors of Vector2l.
8493
8494 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8495
8496         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8497
8498         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8499         
8500         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8501
8502 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8503
8504         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8505         PPC64 passes basic-long.exe.
8506
8507 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8508
8509         * decompose.c: Decompose carry and overflow add on PPC64 like on
8510         other 64 bit archs.  Don't decompose sub at all on PPC64.
8511
8512         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8513         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8514         basic-long.exe.
8515
8516 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8517
8518         * basic-simd.cs: Add tests for accessors of Vector2d.
8519
8520 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8521
8522         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8523
8524         * cpu-x86.md: Same.
8525
8526         * mini-x86.c (mono_arch_output_basic_block): Same.
8527         
8528         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8529
8530 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8531
8532         * basic-simd.cs: Add tests for accessors of Vector4f.
8533
8534 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8537
8538         * cpu-x86.md: Same.
8539
8540         * mini-x86.c (mono_arch_output_basic_block): Same.
8541         
8542         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8543
8544 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8545
8546         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8547
8548 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8549
8550         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8551
8552         * cpu-x86.md: Same.
8553
8554         * mini-x86.c (mono_arch_output_basic_block): Same.
8555         
8556         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8557
8558 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8559
8560         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8561
8562 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8563
8564         * simd-intrinsics.c: Enable setters for Vector16sb.
8565
8566 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8569
8570         * cpu-x86.md: Same.
8571
8572         * mini-x86.c (mono_arch_output_basic_block): Same.
8573         
8574         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8575
8576 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8577
8578         * simd-intrinsics.c: Implement setter for Vector8us.
8579
8580 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8581
8582         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8583         for dead variables.
8584
8585 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8586
8587         * mini-ppc.c: remove references to the red zone in the prolog
8588         (for systems that don't support it).
8589
8590 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8591
8592         * cpu-ppc64.md: Fixed a few instruction lengths.
8593
8594         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8595         now.
8596
8597 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8598
8599         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8600         basic.exe now.
8601
8602 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8603
8604         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8605
8606 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8607
8608         * mini-ops.h: Added OP_INSERT_I2.
8609
8610         * cpu-x86.md: Same.
8611
8612         * mini-x86.c (mono_arch_output_basic_block): Same.
8613         
8614         * simd-intrinsics.c: Implement setter for Vector8s.
8615
8616         * simd-methods.h: Add the names of get setters of Vector8s.
8617
8618 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8621         
8622         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8623         parameters.
8624
8625         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8626
8627 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8628
8629         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8630         for PPC64.  An empty program runs now.
8631
8632 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8633
8634         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8635
8636         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8637         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8638         info for JITted code is emitted into a shared library, loadable into gdb.
8639
8640 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8641
8642         * Makefile.am: Changes to build PPC64.
8643
8644         * mini-arch.h: Include mini-ppc64.h on PPC64.
8645
8646 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8647
8648         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8649         in PPC code up to r119147.
8650
8651 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8652
8653         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8654         cpu-ppc64.md: Changes for PPC64.
8655
8656         Based on code submitted by andreas.faerber@web.de at
8657         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8658         X11/MIT license.
8659
8660 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8661
8662         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8663         cpu-ppc64.md: Copied from the corresponding PPC files from
8664         r118846.
8665
8666 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8667
8668         * mini-ops.h: Added OP_ROUND.
8669
8670         * cpu-x86.md: Added round.
8671
8672         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8673
8674         * basic-math.cs: Added test_0_round to test rounding.
8675
8676         Contributed under MIT/X11 license.
8677
8678 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8679
8680         * aot-compiler.c : Fix the Winx64 build.
8681
8682         Contributed under MIT/X11 license.
8683
8684 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8685
8686         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8687         in OP_EXTRACT_R8 to avoid possible stack corruption.
8688
8689 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8690
8691         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8692
8693         * cpu-x86.md: Added extract_r8.
8694
8695         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8696         
8697         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8698         a couple of OP_EXTRACT_I4.
8699
8700         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8701
8702         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8703
8704 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8705
8706         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8707         and not 4.1. 
8708
8709 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8710
8711         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8712         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8713
8714         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8715         are not needed any more.
8716
8717         * mini.h: Remove the unused INS_LIST macros.
8718
8719         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8720         longer needed.
8721
8722         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8723         ir-emit.h.
8724
8725         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8726         mono_alloc_ireg () instead.
8727
8728         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8729         macros.
8730
8731         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8732         on amd64.
8733
8734         * aot-runtime.c (load_aot_module): Disable AOT when running under
8735         CAS.
8736
8737         * mini-amd64.h: Change the monitor fastpath defines to check for
8738         !PLATFORM_WIN32 so they work on *bsd too.
8739
8740         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8741
8742         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8743
8744         * mini.h (MonoCompile): Remove new_ir flag.
8745
8746         * regalloc.h regalloc.c: Remove unused code.
8747
8748         * cpu-*.md: Remove more unused opcodes.
8749
8750         * simple-cee-ops.h simple-mini-ops.h: Removed.
8751
8752         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8753         
8754 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8755
8756         * aliasing.h: Removed.
8757
8758         * *.c: Remove references to aliasing.h and inssel.h.
8759
8760         * mini.c: Remove additional unused functions.
8761
8762         * mini-ops.h cpu-*.md: Remove unused opcodes.
8763
8764 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8765
8766         Remove the old JIT code.
8767
8768         * inssel*.brg: Removed.
8769
8770         * ssa.c abcremoval.c aliasing.c: Removed.
8771
8772         * ssa2.c: Renamed to ssa.c.
8773
8774         * abcremoval2.c: Renamed to abcremoval.c.
8775
8776         * *.c: Removed all !cfg->new_ir code.
8777
8778         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8779         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8780
8781         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8782         
8783 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8786         to simplify the code and cut back on the number of global symbols in the AOT
8787         file.
8788         
8789         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8790
8791 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8794         with the got/got_info tables.
8795
8796         * mini.h: Bump AOT file format version.
8797         
8798         * unwind.h: New file, contains definitions for stack unwinding.
8799
8800         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8801         to cfg->unwind_ops.
8802         
8803         * aot-compiler.c: Generalize the emitting of unwind information to use the
8804         information in cfg->unwind_ops.
8805
8806         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8807
8808         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8809         AOT method frames. Enable writing symbols for methods by default.
8810
8811 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8812
8813         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8814         and make it work with vectors of element sizes 1, 2 and 4.
8815
8816         * simd-intrinsics.c: Enable getter for all vectors with element size
8817         1, 2 or 4.
8818
8819         * simd-methods.h: Add the names of other getters.
8820
8821         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8822
8823         * cpu-x86.md: Same.
8824
8825         * mini-x86.c: Same.
8826
8827 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8828
8829         * mini-ppc.h: portability fix.
8830
8831 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8832
8833         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8834         buggy and will overwrite it.
8835
8836 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8839         Use it to emit local symbols for all methods so AOTed methods show up with
8840         their full name in gdb/valgrind output.
8841
8842 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8843
8844         * mini-ppc.c: portability fixes.
8845
8846 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8847
8848         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8849         entries out of the if (!generic_shared...) code so it is always done.
8850         (mono_class_init_trampoline): Do the patching when running under valgrind
8851         too, newer versions of valgrind have no problems with it.
8852
8853 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8856         further sections.
8857
8858 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8859
8860         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8861         filters.
8862
8863 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8864
8865         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8866
8867 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8868
8869         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8870
8871         * cpu-x86.md: Same.
8872
8873         * mini-x86.c: Same.
8874
8875         * simd-intrinsics.c: Same.
8876
8877 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8878
8879         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8880
8881 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8882
8883         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8884         to work with more Vector types.
8885
8886 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8887
8888         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8889         store the elemens directly instead of using and intermediate.
8890
8891 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8892
8893         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8894
8895         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8896         to preserve %eax for aot plt trampolines.
8897
8898         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8899         (encode_method_ref): Flag synchronized methods so they won't go through
8900         the AOT trampoline.
8901
8902         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8903         wrappers.
8904
8905         * cpu-ia64.md (jmp): Increase max length.
8906
8907 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8908
8909         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8910         open generic classes.
8911
8912         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8913
8914         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8915         box+brtrue optimization since it causes test failures on x86.
8916
8917 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8918
8919         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8920
8921         * cpu-x86.md: Same.
8922
8923         * mini-x86.c: Same.
8924
8925         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8926         for simd ctor values. 
8927
8928         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8929         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8930
8931 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8934         LogicalRightShift.
8935
8936         * simd-instrincs.c: Same.
8937
8938         * basic-simd.cs: Same.
8939
8940 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8941
8942         * ratests.cs: Add more tests.
8943
8944         * regalloc2.c (add_spill_code): Handle more corner cases.
8945
8946 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8947
8948         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8949         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8950         both the source an destination of an instruction.
8951
8952 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8953
8954         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8955         wapihandles.c: more portability changes.
8956
8957 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8958
8959         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8960         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8961         safe to execute in a signal handler and the kernel provides better
8962         the info in /proc/self/smaps. Avoid the assert on sigaction during
8963         cleanup.
8964
8965 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8966
8967         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8968         do the bblock linking hack if it is actually needed.
8969
8970         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8971         up linking.
8972
8973         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8974         crash problem is fixed.
8975
8976         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8977         bblocks.
8978
8979         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8980         for catch clauses.
8981         (mini_method_compile): Set the starting value of next_vreg to 
8982         MAX_IREGS + MAX_FREGS when using globalra.
8983
8984         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8985         filter clauses with BB_EXCEPTION_HANDLER.
8986
8987         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8988
8989 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8990
8991         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8992         space for stdcall.  Fixes regressions on Win32.
8993
8994 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8997         bblocks.
8998         (linear_scan): Remove an assert which doesn't seem to be needed.
8999
9000         * local-propagation.c (mono_local_deadce): Avoid a call to
9001         MONO_DELETE_INS which would screw up the instruction linking.
9002
9003         * mini.c (mono_decompose_op_imm): Make this work with globalra.
9004
9005         * regalloc2.c: Upgrade to work the current JIT code.
9006
9007 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
9010         case.
9011
9012         * aot-runtime.c: Remove some dead code.
9013
9014         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
9015         consistency.
9016         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
9017
9018         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
9019         trampolines using sscanf since atoi doesn't work on large unsigned values.
9020
9021         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
9022         Initialize code_size.
9023
9024 2008-11-08  Mark Probst  <mark.probst@gmail.com>
9025
9026         * method-to-ir.c (mini_emit_inst_for_method): Make
9027         Interlocked.CompareExchange work for Int arguments on 32 bit
9028         archs, as well.
9029
9030 2008-11-07  Mark Probst  <mark.probst@gmail.com>
9031
9032         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
9033
9034 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
9035
9036         * main.c Fix MSVC build.
9037
9038         Contributed under MIT/X11 license.
9039
9040 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9041
9042         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
9043         alignment larger than 8 bytes are aligned correctly, too.
9044
9045         * mini.c: Honor the min_align field of MonoClass when laying out
9046         the stack.
9047
9048 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
9051
9052         * aot-compiler.c (emit_plt): Fix a warning.
9053         
9054         * aot-compiler.c: Implement ARM support in the binary writer.
9055
9056 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * basic-simd.cs: Add test for getter with byref arg.
9059         Fix the naming of a few tests.
9060         Add missing checks to a test.
9061
9062 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9063
9064         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
9065
9066         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
9067         most of the full-aot support for monitor enter/exit trampolines.
9068
9069         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
9070         enter/exit trampoline creation functions.
9071
9072         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
9073         make dist.
9074
9075 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
9076
9077         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
9078         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
9079         implement the needed functionality without adding crap to the runtime.
9080
9081 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
9082
9083         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
9084         non-x86 builds.
9085
9086         * mini.c (mono_build_date): New global version holding the build date in
9087         string format.
9088         
9089         * Makefile.am (buildver.c): Generate a file containing the build date.
9090
9091         * main.c: Set the build date from the generated file.
9092
9093         * mini.c (mono_get_runtime_build_info): New helper function returning build
9094         information in a string format.
9095         
9096         * driver.c (mono_main): Print the build date in --version.
9097
9098         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
9099         file when the bind-to-runtime-version option is used.
9100
9101 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9102
9103         * simd-intrinsics.c: Fix bug when using getters and byref args. 
9104
9105 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * simd-methods.h: Rename prefetch methods.
9108
9109         * simd-intrinsics.c: Same.      
9110
9111 2008-11-05  Mark Probst  <mark.probst@gmail.com>
9112
9113         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
9114         sizes.
9115
9116 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9117
9118         * aot-compiler.c: Use the bundled elf header files instead of depending on
9119         the system one.
9120         
9121         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
9122         mempool.
9123
9124         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
9125         on every call.
9126
9127 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
9128
9129         * cpu-x86.md: Add store nta ops.
9130
9131         * mini-ops.h: Same.
9132
9133         * mini-x86.c: Same.
9134
9135         * mini.h: Add an enum for simd prefetch modes.
9136
9137         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
9138         of store. Use the changed code to support store nta.
9139
9140         * simd-intrinsics.c: Add prefetch ops for all vector types.
9141
9142 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
9145         threads.
9146         
9147         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
9148         names.
9149
9150         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
9151         trampolines.
9152
9153 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9154
9155         * mini-x86.c: Fixed commit.
9156
9157 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * aot-compiler.c (emit_plt): Align the plt section only on x86.
9160
9161 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9162
9163         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
9164         and MONITOR_EXIT, for the ASM fastpaths.
9165
9166         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
9167         available.
9168
9169         * mini.c, patch-info.h: Signature and patch infos for
9170         Monitor.Enter/Exit trampolines.
9171
9172         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
9173
9174         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
9175         Monitor.Enter/Exit ASM fastpath for Linux.
9176
9177 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9178
9179         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
9180
9181         * objects.cs: Add a new test.
9182         
9183         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
9184
9185         * aot-runtime.c (load_method): Run class initialization in the PLT case even
9186         if MONO_LOG_LEVEL is set.
9187
9188         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9189
9190         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9191
9192         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9193         
9194         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9195         of file offsets. Align the sections belonging to the data segment to 
9196         PAGESIZE.
9197
9198 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9201         elf.h. Port it to amd64.
9202
9203 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9204
9205         * driver.c: Enable SIMD by default.
9206
9207 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * cpu-x86.md: Add prefetch op.
9210
9211         * mini-ops.h: Same.
9212
9213         * mini-x86.c: Same.
9214
9215         * mini.h: Add an enum for simd prefetch modes.
9216
9217         * simd-methods.h: Add prefetch function names.
9218
9219         * simd-intrinsics.c: Add prefetch ops for all vector types.
9220
9221 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9222
9223         * aot-compiler.c (emit_bytes): Speed this up a little.
9224
9225 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * aot-compiler.c: Add JIT time etc. statistics.
9228         
9229         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9230
9231         * mini.h (MonoCompile): Add 'got_offset' field.
9232
9233         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9234         method_got_offsets array.
9235
9236         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9237         wrappers.
9238
9239         * aot-compiler.c (compile_method): Add generic method instances referenced
9240         by the method to the list of methods to be compiled, this is required so if
9241         A<T> references B<T>, and another assembly references A<int>, then it will
9242         also get a copy of B<int>.
9243
9244         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9245         when checking for monitor enter/exit.
9246
9247 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9248
9249         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9250         for Monitor.Enter and Monitor.Exit if enabled.
9251
9252         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9253         Solaris.
9254
9255 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9256
9257         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9258         of an OP_MOVE. Fixes #440046.
9259
9260         * basic-long.cs: Add a new test.
9261
9262 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * mini.h: Add synchronization note for the managed counter-part.
9265
9266         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9267         returns the simd caps of the current cpu.
9268
9269 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9270
9271         * basic-simd.cs: Remove Console.WriteLine.
9272
9273 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9274
9275         * basic-simd.cs: New tests for Vector2ul.
9276
9277 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9278
9279         * simd-intrinsics.c: Add new vector type Vector2ul.
9280
9281 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * basic-simd.cs: New tests for Vector2l.
9284
9285 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9286
9287         * cpu-x86.md: Add long version of most packed int ops.
9288
9289         * mini-ops.h: Same.
9290
9291         * mini-x86.h: Same.
9292
9293         * simd-intrinsics.c: Add new vector type Vector2l.
9294
9295 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9298
9299         * simd-methods.h: Remove SN_op_BitwiseXor.
9300
9301 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9302
9303         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9304         alignment.
9305
9306 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9307
9308         * basic-simd.cs: Test for Vector2d.
9309
9310         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9311         value.
9312
9313 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9314
9315         * cpu-x86.md: Add double version of all packed float ops.
9316
9317         * mini-ops.h: Same.
9318
9319         * mini-x86.h: Same.
9320
9321         * simd-intrinsics.c: Add new vector type Vector2d.
9322
9323         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9324
9325         * simd-methods.h: Add Duplicate.
9326
9327 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9328
9329         * basic-simd.cs: Test for packing with signed saturation.
9330
9331 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9334         found in the TYPESPEC table.
9335
9336 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9337
9338         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9339         too.
9340
9341         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9342
9343         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9344         instead of the RVA, since the RVA can be changed by tools like the cil 
9345         stripper.
9346
9347         * method-to-ir.c (mono_method_to_ir2): Ditto.
9348
9349         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9350         (deserialize_variable): Ditto.
9351
9352 2008-10-25  Martin Baulig  <martin@ximian.com>
9353
9354         * debug-mini.c (write_variable): Use
9355         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9356
9357 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9358
9359         * cpu-x86.md: Add unsigned variants of packd and packw.
9360
9361         * mini-ops.h: Same.
9362
9363         * mini-x86.h: Emit the right instruction for packd and packw.
9364         Add unsigned variants of packd and packw.
9365
9366         * simd-intrinsics.c: Packd and packw were used in place of their
9367         unsigned variants. Change that.
9368         Add intrinsics for (Signed)PackWithSignedSaturation.
9369
9370         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9371
9372 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9373
9374         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9375
9376 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9377
9378         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9379
9380         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9381
9382         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9383         sse instructions.
9384
9385         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9386
9387 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9388
9389         * method-to-ir.c, mini.c: Special casing for the synchronized
9390         wrapper for the ldtoken+GetTypeFromHandle case.
9391
9392 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9395
9396         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9397         created/split bblocks.
9398
9399 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9400
9401         * mini-ops.h: Add packed signed mul high.
9402         
9403         * cpu-x86.md: Same.
9404
9405         * mini-x86.c (mono_arch_output_basic_block): Same.
9406
9407         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9408
9409         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9410
9411 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * basic-simd.cs: Tests for Vector16sb.
9414
9415 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9416
9417         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9418
9419 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9420
9421         * mini-ops.h: Add packed signed min, max and compare greater.
9422         
9423         * cpu-x86.md: Same.
9424
9425         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9426         saturation.
9427
9428         * simd-methods.h: Add CompareGreaterThan.
9429
9430         * simd-methods.h: Remove CompareEquals.
9431
9432         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9433
9434         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9435
9436         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9437         CompareEqual.
9438
9439 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * basic-simd.cs: Fix tests due to change in the API.
9442
9443 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9444
9445         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9446
9447 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9448
9449         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9450
9451         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9452         inst_offset as this has invalid values for LDADDR.
9453
9454 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9455
9456         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9457
9458         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9459
9460 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9463         for accessing field->data.
9464
9465 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9466
9467         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9468
9469 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9472
9473         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9474
9475 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9478         from the cfg mempool.
9479
9480 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9481
9482         * basic-simd.cs: Tests for new methods in Vector8us.
9483
9484 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * mini-ops.h: Add multiply and store high.
9487         
9488         * cpu-x86.md: Same.
9489
9490         * mini-x86.c (mono_arch_output_basic_block): Same.
9491
9492         * simd-methods.h: Same.
9493
9494         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9495         and CompareEqual.
9496
9497 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9498
9499         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9500         mono_class_setup_vtable ().
9501
9502         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9503         mono_class_get_vtable_entry () for accessing klass->vtable.
9504
9505         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9506
9507         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9508         found.
9509
9510         * method-to-ir.c (mono_save_token_info): Don't save references made from
9511         wrappers.
9512
9513         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9514         of generic instances.
9515
9516         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9517
9518 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9519
9520         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9521         OP_JMP depends on the method signature.  Calculate it properly.
9522
9523 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9524         
9525         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9526         called directly.
9527
9528         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9529         instances.
9530         (emit_extra_methods): Add another table mapping method indexes to 
9531         offsets in the extra_method_info table.
9532
9533         * mini.h: Bump AOT file format version.
9534         
9535         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9536         and mono_aot_get_method_from_token () into one function.
9537
9538 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9539
9540         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9541         separate counter.
9542
9543 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9546         methods.
9547
9548         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9549         disable_aot.
9550
9551         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9552
9553         * mini.h: Bump aot file format version.
9554
9555         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9556         AOT file can contain native code for methods which are not in the METHOD
9557         table. Generate code for non-sharable generic instances of generic methods
9558         found in the METHODSPEC table.
9559         
9560         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9561         encoding generic type handles.
9562
9563         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9564         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9565
9566         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9567         macros + MONO_ADD_INS.
9568
9569         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9570         context as well.
9571
9572         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9573
9574         * mini.h: Bump aot file format version.
9575
9576         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9577
9578 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9579
9580         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9581         platforms, with definable stack alignment value.  Set to 16 now
9582         for all platforms.
9583
9584         * mini.c, mini.h, driver.c: Command line option for disabling
9585         stack alignment.
9586
9587 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9588
9589         * basic-simd.cs: Tests for new methods in Vector4ui.
9590
9591 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9592
9593         * mini-ops.h: Add packed int shuffle.
9594         
9595         * cpu-x86.md: Same.
9596
9597         * mini-x86.c (mono_arch_output_basic_block): Same.
9598
9599         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9600         extract mask, max, min, shuffle.
9601
9602         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9603
9604 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9605
9606         * basic-simd.cs: Tests for new methods in Vector8us.
9607
9608 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9609
9610         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9611         RuntimeTypeHandle, not a TypedReference.
9612
9613 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9614
9615         * simd-intrinsics.c: remove relocations.
9616
9617 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9618
9619         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9620         optimizations from the x86 backend.
9621
9622 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9623
9624         * simd-methods.h, simd-intrinsics.c: debloat method names and
9625         prepare for no relocations.
9626
9627 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9628
9629         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9630         
9631         * cpu-x86.md: Same.
9632
9633         * mini-x86.c (mono_arch_output_basic_block): Same.
9634
9635         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9636         extract mask, max, min and sum of absolute differences.
9637
9638         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9639         method name.
9640
9641 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9644         Renamed one test for consistency.
9645
9646 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9647
9648         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9649         fix to the code that deal with other blocks.
9650
9651 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9654
9655 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9656
9657         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9658         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9659         able to process the source reg.
9660
9661 2008-10-16  Martin Baulig  <martin@ximian.com>
9662
9663         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9664
9665         * inssel.brg: Add `OP_HARD_NOP'.
9666
9667         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9668
9669         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9670         `OP_HARD_NOP' instruction when running inside the debugger.
9671
9672         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9673         `OP_HARD_NOP' instruction when running inside the debugger.
9674
9675 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9676
9677         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9678         now works. The issue with the regalloc tripping up no longer
9679         happens.
9680
9681         * simd-intrinsics.c (load_simd_vreg): Same.
9682
9683 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9684         
9685         * basic-simd.cs: Tests for new Vector8ui methods.
9686
9687 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9688
9689         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9690         only for type. This fixes crashes where MonoInst::klass is checked
9691         for ops of type != VTYPE or OBJ.
9692
9693         * simd-intrinsics.c (load_simd_vreg): Same.
9694
9695 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9696
9697         * mini-ops.h: Add ops for packed shuffle/max/avg and
9698         extract mask.
9699         
9700         * cpu-x86.md: Same.
9701
9702         * mini-x86.c (mono_arch_output_basic_block): Same.
9703
9704         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9705         extract mask.
9706
9707         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9708         to emit extract mask op.
9709
9710         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9711         to emit word shuffles.
9712
9713 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9714
9715         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9716         the largest alignment needed by a variable, but at least
9717         sizeof(gpointer).
9718
9719 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9720
9721         * basic-simd.cs: Tests for the fixes in the last commit.
9722
9723 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9724
9725         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9726         no longer handles STACK_PTR input.
9727
9728         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9729
9730         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9731         get_simd_vreg   but handles STACK_PTR input.
9732
9733         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9734         as the input can be an arbitrary pointer.
9735
9736         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9737         LDADDR local optimization directly otherwise use a store op.
9738
9739 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9740
9741         * basic-simd.cs: Tests for dup low and dup high.
9742
9743 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9744
9745         * mini-ops.h: Add dup low and dup high ops.
9746         
9747         * cpu-x86.md: Same.
9748
9749         * mini-x86.c (mono_arch_output_basic_block): Same.
9750
9751         * simd-intrinsics.c (vector4f_intrinsics): Same.
9752
9753 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9754
9755         * basic-simd.cs: Tests for recently added functionality.
9756
9757 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9758
9759         * mini-ops.h: Add remaining sse1 fp ops.
9760         
9761         * cpu-x86.md: Add remaining sse1 fp ops.
9762
9763         * mini-x86.c (mono_arch_output_basic_block): Same.
9764
9765         * mini.h: Add enum for simd FP compare conditions.
9766
9767         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9768
9769         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9770         so the backed can generate the appropriate op.
9771
9772 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9773         This patch squeese one more byte from the SimdIntrinsc struct.
9774
9775         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9776         a a shift amount intead of simply or'ing it.
9777
9778         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9779
9780         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9781         byte so we can have an aditional flags field without increasing struct size.
9782
9783         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9784         against the simd_supported_versions bitmask.
9785
9786         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9787
9788 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9789
9790         * mini.c: remove rawbuffer code (the only use here is unsafe because
9791         it takes locks during signal handling and the kernel now provides much
9792         better info in proc/pid/smaps these days).
9793
9794 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9797         OP_X86_PUSH_OBJ. Fixes #434620.
9798
9799         * objects.cs: Add a test.
9800         
9801 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9802
9803         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9804         that the packuswb/packusdw don't work with unsigned numbers for what
9805         would be negative numbers in signed format.
9806
9807         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9808         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9809
9810         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9811
9812         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9813
9814         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9815
9816         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9817
9818         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9819         add more ops.
9820
9821         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9822         version as the enum in mini.h.
9823
9824         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9825         for sse3 ops, check the simd_version field if present. This way the code
9826         works with all versions of sse.
9827
9828 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9829
9830         * simd-intrinsics.c: Fixed intrinsic name typo.
9831
9832         * mini.h: Added missing simd exported function.
9833
9834         * basic-simd.cs: Added tests for Vector4ui.
9835         Fixed broken test for Vector16b.
9836
9837 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9840         the max length to 64.
9841
9842 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9843
9844         * method-to-ir.c: Only do the fast virtual generic method call for
9845         non-wrapper methods.
9846
9847         * mini.h, mini-trampolines.c: The new generic virtual remoting
9848         trampoline handles virtual method calls via the vtable (as done by
9849         the fast virtual generic method calls) to remoting proxies.
9850
9851         * mini.c (mono_jit_create_remoting_trampoline): For generic
9852         methods reate a generic virtual remoting trampoline.
9853
9854         * mini-amd64.h: Enable fast virtual generic method calls again.
9855
9856 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9857
9858         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9859         restore registers when doing tail calls.
9860
9861 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9862
9863         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9864         Vector4ui.
9865
9866 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9867
9868         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9869
9870 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9871
9872         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9873
9874 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9875
9876         * basic-simd.cs: Retrofit for API changes.
9877
9878 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9879
9880         * mini-ppc.c: Handle integer stack arguments for tail calls.
9881
9882 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9883
9884         * optflags-def.h: Removed sse3 optimization.
9885
9886         * driver.c: Same.
9887
9888         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9889         sse3.
9890
9891         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9892
9893         * mini.h: Added enumeration with simd versions.
9894
9895         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9896         for detecting SSE3.
9897
9898         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9899
9900         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9901
9902 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9905
9906         * basic-simd.cs: Fixed test naming.
9907
9908 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9909
9910         * mini-ops.h: Added ops for packed and saturated math, shifts
9911         and packing/unpacking.
9912
9913         * cpu-x86.md: Added descriptors for the above ops.
9914
9915         * mini-x86.c: Added code to emmit the above ops.
9916
9917         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9918
9919 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * aot-compiler.c (compile_method): Enable AOT for generic code.
9922
9923         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9924
9925 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9926
9927         * mini.c: add a workaround for a common screwup that ends up blamed
9928         to mono (other processes blocking signal delivery).
9929
9930 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9931
9932         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9933         in the LDFLD/STFLD opcodes. Fixes #432673.
9934
9935         * iltests.il.in: Add a new test.
9936
9937 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9938
9939         * mini-arm.c: attach the thread in unmanaged->managed transitions
9940         using delegates (bug #433148).
9941
9942 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9943
9944        * basic-simd.cs: Use new ShuffleSel constants.
9945
9946 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9947
9948         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9949
9950         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9951         only disable simd intrinsics if no sse2 is detected.
9952
9953         * optflags-def.h: Added sse3.
9954
9955         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9956         is disabled.
9957
9958 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9961         when adding delegate-invoke wrappers.
9962
9963 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * Makefile.am: Reenable the simd tests.
9966
9967 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9968
9969         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9970           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9971           other vreg is allocated to that hreg.
9972
9973         Contributed under MIT/X11 license.
9974
9975 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9976
9977         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9978         yet checked in.
9979
9980 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9981
9982         * basic-simd.cs: New test suite for SIMD intrinsics.
9983
9984         * Makefile.am: Added new tests.
9985
9986 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9987
9988         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9989
9990         * mini-ops.h: Same.
9991
9992         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9993
9994         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9995         using SSE2 aware opcodes.
9996
9997         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9998         is enabled, this code path is only reachable if conversion ops are emmited after
9999         mono_method_to_ir.
10000
10001         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
10002
10003         This optimization saves 6 bytes per conversion against the old version.
10004
10005 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * aot-compiler.c (compile_method): Don't skip methods referencing 
10008         generic methods without a corresponding entry in token_info_hash, since
10009         encode_method_ref () can handle all generic methods now.
10010
10011         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
10012         generic context is set.
10013         
10014         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
10015         generic sharing of LDTOKEN.
10016
10017 2008-10-06  Mark Probst  <mark.probst@gmail.com>
10018
10019         * mini-amd64.h: Temporarily disabled fast virtual generic method
10020         calls because it breaks the System.Runtime.Remoting tests.
10021
10022 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
10025
10026         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
10027         so inlining actually works.
10028         (check_inline_caller_method_name_limit): Ditto.
10029
10030 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
10031
10032         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
10033         64 bit safety (from Olaf Hering and Andreas Farber).
10034
10035 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10036         
10037         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
10038         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
10039         unused virtual call support code.
10040
10041         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
10042         
10043         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
10044         which can't use aot trampolines.
10045         (decode_patch): Don't create aot trampolines for methods which can't use
10046         them.
10047
10048         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
10049         use aot trampolines.
10050
10051         * mini.h: Bump AOT image format version.
10052         
10053 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
10054
10055         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
10056         to save_token_info () since cmethod is inflated for constrained calls.
10057
10058         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
10059
10060 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
10061
10062         * Makefile.am: Add build rules for ppc64.
10063         This avoids the build failing at pedump with unresolved symbols
10064         due to lack of arch_sources. Instead it will now fail earlier
10065         due to lack of cpu-ppc64.md.
10066
10067         Contributed under MIT/X11 license.
10068
10069 2008-10-04  Mark Probst  <mark.probst@gmail.com>
10070
10071         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
10072         tail calls.
10073
10074         * iltests.il.in: Add test case for tail call with many arguments.
10075
10076 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10077
10078         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
10079         to the fast virtual generic method code until the aot case is fixed.
10080
10081 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10082
10083         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
10084
10085 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10086
10087         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
10088         thunks.
10089
10090 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10091         
10092         * simd-intrinsics.c: Forgot to add this one.
10093
10094         * mini-codegen.c: Fix macro in case SIMD is not supported.
10095
10096 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10097         
10098         This patch land initial JIT support for simd intrinsics.
10099
10100         * mini-x86.h: Added new define to make --enable_minimal work on x86.
10101
10102         * Makefile.am: Added simd-intrinsics.c
10103
10104         * simd-intrinsics.c: New file with simd instrinsic related
10105         code.
10106
10107         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
10108
10109         * cpu-x86.md: Add simd related instructions.
10110
10111         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
10112
10113         * driver.c: Added two new --regression variants.
10114
10115         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
10116
10117         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
10118
10119         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
10120         extract some complicated logic to helper functions.
10121
10122         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
10123
10124         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
10125
10126         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
10127         the specialized simplification pass.
10128
10129         * method-to-ir.c (mono_spill_global_vars): Use new macro.
10130
10131         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
10132
10133         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
10134         table.
10135
10136         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
10137         if MONO_ARCH_NEED_SIMD_BANK is defined.
10138
10139         * mini-ops.h: Added the new simd ops.
10140
10141         * mini-x86.c: Added mono_arch_xregname.
10142
10143         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
10144
10145         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
10146
10147         * mini-x86.h: Define simd related MONO_ARCH macros.
10148
10149         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
10150
10151         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
10152
10153         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
10154         MONO_CLASS_IS_SIMD to deal with simd related IR.
10155
10156         * mini.h (MonoInst): Added spill_var to the backend union.
10157
10158         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
10159
10160         * mini.h: Added forward declarations of the new simd fuctions.
10161
10162         * optflags-def.h: Added new optimization names SIMD.
10163
10164         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
10165
10166         * regalloc.h: Added support for working with 3 register banks.
10167
10168         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
10169
10170         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
10171
10172 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini-exceptions.c: remove 64 bit related ifdef clutter.
10175
10176 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
10179         instead of one on 64 bit systems.
10180
10181         * method-to-ir.c: Remove unused includes.
10182
10183 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
10184
10185         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
10186         cfg->used_int_regs, since the two are different on arm.
10187
10188 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10189
10190         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10191         mono_method_get_vtable_index() to get the vtable index.
10192
10193 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10194
10195         * method-to-ir.c (mono_method_to_ir2): Don't create native
10196         wrappers for array methods, because they're never called (and if
10197         they were called they wouldn't work).
10198
10199 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10200
10201         * method-to-ir.c (mono_method_to_ir2): Array methods are
10202         special-cased and must not be invoked indirectly via the (M)RGCTX
10203         when generic sharing is turned on.  Fixes #431413.
10204
10205 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10206
10207         * method-to-ir.c: When generic sharing is active, call
10208         non-interface virtual generic methods via the standard trampoline.
10209
10210         * mini-trampolines.c: Handle virtual generic shared methods.
10211
10212         * mini.h, mini-x86.c, mini-x86.h: New argument for
10213         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10214         method thunks and which is the trampoline to call if the lookup
10215         fails.  Enable the virtual generic method thunk for x86.
10216
10217         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10218         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10219         argument but assert that it's NULL, because these archs don't yet
10220         implement the virtual generic method thunk.  Changes in the IMT
10221         thunk data structures.
10222
10223 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * aot-compiler.c (emit_globals): Avoid invalid characters in
10226         the static linking symbol.
10227
10228         * objects.cs: Add a test for the range check optimization. Fix warnings.
10229
10230         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10231         optimization from the current JIT.
10232
10233         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10234         later in decompose_array_access_opts () to allow more optimizations.
10235
10236         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10237         mono_decompose_soft_float () for consistency.
10238
10239         * mini-ops.h: Fix arguments of OP_STRLEN.
10240
10241         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10242         into a separate function.
10243         (reset_cast_details): Ditto.
10244         (handle_unbox): Save cast details. Fixes #431254.
10245
10246         * method-to-ir.c: Remove some obsolete FIXMEs.
10247
10248 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10249
10250         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10251
10252 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10253
10254         * mini-codegen.c: More work on macros to make them
10255         ready for multiple regbanks.
10256
10257 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10258
10259         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10260
10261         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10262
10263 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10264
10265         * mini-codegen.c (mono_spillvar_offset): Proper support for
10266         multiple regbanks.
10267
10268 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10269
10270         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10271         the stack overflow changes.
10272
10273 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10274
10275         * mini-codegen.c: Make all bank macros depend on reg_bank.
10276
10277         * mini-codegen.c (mono_local_regalloc): Make free mask
10278         initialization regbank aware.
10279
10280 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10281
10282         * mini-codegen.c (mono_local_regalloc): Extract callee
10283         mask selection to a function and make it regbank aware.
10284
10285 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10286
10287         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10288         code to deal with many regbanks.
10289
10290 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10291
10292         * mini-codegen.c: More fp->regbank changes.
10293
10294 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10295
10296         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10297         of a hardcoded constant.
10298
10299 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10300
10301         * method-to-ir.c (type_from_stack_type): Fix typo.
10302
10303 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * mini-ia64.c (emit_move_return_value): Convert float return values to
10306         double.
10307
10308         * objects.cs: Add a new test.
10309         
10310         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10311         VARARG methods to fix an assert later.
10312
10313         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10314         end so it at least compiles.
10315
10316 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10317
10318         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10319
10320 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10321
10322         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10323         optimization to a new function (emit_optimized_ldloca_ir) and enable
10324         it for both ldloca and ldloca_s.
10325
10326 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10329         gshared CASTCLASS code.
10330
10331         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10332         amd64, where the libc stack unwinder encounters stack frames referring to
10333         native code in unmapped memory.
10334
10335         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10336         sharing.
10337
10338         * generics.cs: Add new test.
10339
10340 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10343         add a check that one of the ARM_FPU_ constants is defined.
10344
10345         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10346         
10347         * mini-exceptions.c: Fix build on non-altstack platforms.
10348
10349         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10350         sharing of vtypes.
10351
10352         * ir-emit.h: Add a comment to NEW_PCONST.
10353
10354         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10355
10356         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10357
10358         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10359         after the changes to MonoJitDomainInfo.
10360
10361 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10362
10363         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10364
10365 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10366
10367         * mini-ppc.c: Compiler warning fixes.
10368
10369 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10370
10371         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10372         for pinvokes.
10373
10374 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10375
10376         * exceptions-ppc.c, mini-ppc.h: Compile
10377         mono_arch_handle_altstack_exception() on Darwin, too.
10378
10379 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10380
10381         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10382         work on archs which don't have generic sharing implemented, only
10383         without the vtable_arg.
10384
10385 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10386
10387         * mini.c: Added comment explaining why delegate ctor icall
10388         wrappers are compiled.
10389
10390 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10391
10392         * mini.c: Don't produce trampolines to delegate ctor icall
10393         wrappers but compile them upfront.
10394
10395 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10396
10397         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10398         runtime-set function when going back to managed code. Currently this
10399         is used to set back the protection on the soft ovf pages and/or to
10400         throw the stack overflow exception that happened in unmanaged code.
10401
10402 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10403
10404         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10405         runtime-set function when going back to managed code. Currently this
10406         is used to set back the protection on the soft ovf pages and/or to
10407         throw the stack overflow exception that happened in unmanaged code.
10408
10409 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10410
10411         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10412         the support code for restoring stack protection after stack overflows
10413         that happen in unmanaged code. Don't set the exec permission on the
10414         soft overflow area.
10415
10416 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10419         delegate->method_ptr is set. Fixes #428054.
10420
10421 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * tests.cs: Rename to ratests.cs.
10424
10425         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10426         emit_get_rgctx_... functions.
10427
10428 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10429
10430         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10431
10432 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10433
10434         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10435         before asserting that method is sharable.
10436
10437 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10438
10439         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10440         whether method needs a static RGCTX wrapper used instead of
10441         complex conditions.
10442
10443         * generic-sharing.c, mini.h: A few functions moved to
10444         metadata/generic-sharing.c.
10445
10446 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10447
10448         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10449         Generic code sharing for value types, which essentially means
10450         treating value type methods like static methods.  The RGCTX is
10451         passed in the same way.
10452
10453 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10456         opcode when creating multi-dimensional arrays of open types.
10457
10458         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10459         open generic types.
10460
10461         * generics.cs: Add a test.
10462
10463         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10464
10465 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10466
10467         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10468
10469         * mini.c (mini_method_compile): Set it when running under the debugger. 
10470
10471         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10472         vreg optimization if the flag is set.
10473
10474         * driver.c (mono_main): Add --attach= option to pass options to
10475         the attach agent.
10476
10477         * mini.c (sigquit_signal_handler): Start the attach agent.
10478
10479         * ssapre.c: Disable this to save space since it is not yet ported to
10480         linear IR.
10481
10482         * regalloc2.c: Disable this to save space.
10483
10484         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10485
10486 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10487
10488         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10489         the -v option useful again.
10490
10491 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10494         --break-at-bb.
10495
10496         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10497         arrays of arrays. Fixes #428406.
10498
10499         * method-to-ir.c (mini_emit_castclass): Ditto.
10500
10501         * objects.cs: Add new test.
10502         
10503 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10504
10505         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10506         was wrong at it choked against target_type_is_incompatible for byref types.
10507
10508 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10511         places.
10512
10513 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10514
10515         * mini-exceptions.c: update a few more exceptions-related counters.
10516
10517 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10518
10519         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10520         new functions to allocate from persistent mempools.
10521
10522 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10525         multiple register banks in the future.
10526
10527         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10528
10529 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10530
10531         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10532
10533         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10534
10535         * mini.h: Export type_to_eval_stack_type.
10536
10537         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10538         is only ins->klass of byref types.
10539
10540 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10543         (mini_emit_memcpy2): Ditto.
10544
10545         * mini-amd64.c: Fix a warning.
10546
10547 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10548
10549         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10550         linking.
10551
10552 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10553
10554         * method-to-ir.c: Extract stloc micro-optimization to a
10555         function and apply it to all cases.
10556
10557 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10558
10559         * method-to-ir.c: Don't fail generic code sharing in cases we
10560         already support.
10561
10562 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10563
10564         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10565
10566 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10567
10568         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10569         implementation.
10570
10571 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10572
10573         * trace.c: make tracing more useful and correct, with per-thread
10574         id and indent info.
10575
10576 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10577
10578         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10579         doing a method call and the argument is an R4.
10580
10581 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10582
10583         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10584         generic methods.
10585
10586 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10587
10588         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10589
10590 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10593         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10594
10595 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * driver.c: Add a --agent argument (not supported yet) to load managed
10598         agent assemblies before loading the main assembly, similarly to how the
10599         Java VM handles agents.
10600
10601 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10602
10603         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10604         function to do stack layout of local variables.
10605
10606 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10607
10608         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10609         calculation.
10610
10611 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10612
10613         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10614         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10615         JIT if DISABLE_JIT is defined.
10616
10617         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10618         defined.
10619
10620 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10621
10622         * iltests.il.in: Disable the fconv test on PPC (the result is
10623         undefined according to ECMA).
10624
10625 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10626
10627         * iltests.il.in: Enable tail call tests for PPC.
10628
10629         * mini.h: Add variable for storing incoming valuetype argument
10630         addresses for tail calls.
10631
10632         * mini-ppc.c: Implement valuetype arguments and return values for
10633         tailcalls on Linux.
10634
10635 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10636
10637         * mini-ppc.c: Partially implement tail calls (struct arguments and
10638         return values not supported).
10639
10640         * method-to-ir.c: Enable tail calls on PPC.
10641
10642 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10645         runtime-invoke wrappers to work around the problem of them getting
10646         assigned to a random class.
10647
10648         * aot-runtime.c (mono_aot_get_method): Ditto.
10649         
10650 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10651
10652         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10653         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10654
10655 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10656
10657         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10658         until they're implemented properly.
10659
10660         * exceptions-ppc.c: Use arch-independent exception-handling code
10661         instead of custom one.
10662
10663         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10664         for Linear IR.
10665
10666         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10667
10668         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10669         applies when __powerpc__ is defined.
10670
10671 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10674         methods to their code to avoid computing the full name of wrappers and
10675         doing a lookup in a string hash table.
10676
10677 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10678
10679         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10680         we identify bblocks before method_to_ir () is ran.
10681
10682         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10683         Also avoid optimizing branches pointing to themselves.
10684
10685         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10686
10687 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10688
10689         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10690
10691 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10692
10693         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10694         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10695         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10696         'buf'.
10697
10698         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10699         jumped to the same entry in plt_jump_table.
10700
10701 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10702
10703         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10704         dynamic images.
10705
10706 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10709         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10710         #421807.
10711
10712 2008-08-29  Geoff Norton  <gnorton@novell.com>
10713
10714         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10715         segment, and doesn't properly handle .space as .text.  Fixes
10716         AOT Mach/ARM
10717
10718 2008-08-29  Geoff Norton  <gnorton@novell.com>
10719
10720         * mini.c: Disable the mach exception handler when running on 
10721         ARM
10722
10723 2008-08-29  Geoff Norton  <gnorton@novell.com>
10724
10725         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10726         globals on Darwin/ARM
10727
10728 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10729
10730         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10731         since too many things depend on it. Instead, call 
10732         mono_runtime_set_no_exec ().
10733         
10734         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10735         the new JIT.
10736
10737         * aot-compiler.c: Add an 'asm-only' AOT option.
10738
10739         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10740                 
10741         * aot-compiler.c (compile_method): Disable gshared support for now as it
10742         doesn't yet work.
10743
10744 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10745
10746         * mini-amd64.h : Fix a compiler warning.
10747
10748         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10749           Changed to use a callback function to retrieve the unwind info.
10750           This avoids problems observed when code blocks were removed by
10751           unloading an app domain.
10752
10753         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10754           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10755           to work properly.
10756
10757         Contributed under MIT/X11 license.
10758
10759 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10760
10761         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10762           case to keep the stack aligned to 8.
10763
10764         Contributed under MIT/X11 license.
10765
10766 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10767
10768         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10769         avoid repeated linear searches.
10770
10771 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10772
10773         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10774         methods it can't handle.
10775         
10776         * aot-compiler.c (add_method): Avoid adding a method twice.
10777         (add_wrappers): Add runtime invoke wrappers for all methods.
10778
10779         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10780         function to create an aot-compatible version of this trampoline.
10781
10782         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10783
10784 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10787
10788         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10789         with a generic sharing failure.
10790
10791         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10792
10793         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10794         CEE_RETHROW. Fixes #419634.
10795
10796         * mini.c (mono_method_to_ir): Ditto.
10797
10798         * exceptions.cs: Add a new test.
10799         
10800         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10801         to mono_type_stack_size_internal () since some callers might not pass in
10802         an rgctx.
10803
10804         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10805         instrument_prolog. Fixes #419878.
10806
10807         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10808         doubles in soft float mode volatile.
10809
10810 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10811
10812         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10813
10814         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10815         to handle soft float correctly.
10816
10817         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10818         the fast path.
10819
10820         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10821
10822         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10823         to sp, since the generics catch code requires it.
10824
10825         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10826         copying.
10827
10828         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10829         mono_arch_emit_imt_argument ().
10830
10831         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10832
10833         * mini-arm.c tramp-arm.c: Generic sharing updates.
10834
10835 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * mini-arm.c: Fix the arm build.
10838
10839         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10840         handling enums, generic instances and generic sharing.
10841         (mini_type_stack_size_full): Ditto.
10842
10843         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10844         
10845         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10846
10847         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10848
10849         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10850         trampolines.
10851
10852         * mini-arm.c: Various small generic sharing changes.
10853
10854         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10855         this for x86.
10856         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10857         custom code.
10858
10859         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10860         helper function to return a generic class init trampoline.
10861
10862         * method-to-ir.c mini.c: Use it.
10863         
10864         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10865         arch-specfic function to return a generic class init trampoline.
10866
10867         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10868         the GENERIC_CLASS_INIT custom code.
10869
10870         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10871         a fatal error, not a sharing failure.
10872
10873         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10874         needed.
10875
10876         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10877         trampoline argument from MONO_ARCH_VTABLE_REG.
10878
10879         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10880         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10881         argument, and pass the vtable in VTABLE_REG.
10882
10883         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10884         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10885         argument, and pass the vtable in VTABLE_REG.
10886         (mono_arch_create_trampoline_code_full): Remove some special casing for
10887         the rgctx fetch trampoline.
10888
10889         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10890         Fixes #419273.
10891
10892         * iltests.il: Add a test for it.
10893
10894 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10895
10896         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10897
10898         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10899         no longer needed.
10900
10901         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10902         use mono_jit_info_table_find () to avoid recursion.
10903         (mono_delegate_trampoline): Add a sync wrapper here.
10904
10905         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10906         here.
10907
10908         * mini.c (mono_method_to_ir): Ditto.
10909         
10910         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10911         add_sync_wrapper argument. Don't add a sync wrapper here.
10912         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10913
10914         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10915         
10916 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10917
10918         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10919           of nonvolatile registers back from MonoContext to CONTEXT.
10920
10921         Contributed under MIT/X11 license.
10922
10923 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10924
10925         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10926           arguments on Winx64 there are only 4 argument registers.  For this
10927           logic to work the last argument must be pulled from the stack.  
10928
10929         Contributed under MIT/X11 license.
10930
10931 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10934
10935         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10936         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10937         encode/decode_method_ref ().
10938
10939         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10940
10941         * aot-runtime.c (decode_patch): Ditto.  
10942
10943         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10944         MONO_PATCH_INFO_METHOD.
10945
10946         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10947         MonoGenericJitInfo.
10948
10949         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10950         MonoGenericJitInfo.
10951
10952         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10953
10954         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10955         one from the caller.
10956
10957         * aot-runtime.c (decode_generic_inst): New function to decode and
10958         return a interned generic inst.
10959         (decode_klass_ref): Use it.
10960         (decode_method_ref): Ditto.
10961
10962         * aot-compiler.c (emit_exception_debug_info): Save 
10963         jinfo->has_generic_jit_info too.
10964
10965 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10966
10967         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10968
10969         * iltests.il.in: Add a test for fconv_to_i.
10970
10971         * liveness.c: Disable the liveness2 pass for now to save space.
10972
10973         * regalloc2.c: Include mempool-internals.h to fix warnings.
10974
10975         * aot-compiler.c (encode_method_ref): Encode the context of generic
10976         instance methods.
10977
10978         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10979         the context saved in the aot file.
10980
10981         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10982
10983         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10984
10985         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10986         volatile so they won't be optimized away.
10987
10988 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10989
10990         * ssa.c:
10991         * ssa2.c:
10992         * mini.c:
10993         * regalloc2.c:
10994         * dominators.c: Remove duplicated functions that now are in
10995         mempool-internals.h.
10996
10997 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * aot-compiler.c: Fix warnings.
11000
11001         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
11002
11003         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
11004
11005         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
11006         as the patch type.
11007
11008         * mini.c (mono_resolve_patch_target): Ditto.
11009         
11010         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
11011         (encode_klass_ref): Add support for encoding VARs/MVARs.
11012
11013         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
11014
11015         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
11016         the handling of the got entries into a separate 'decode_got_entry' function.
11017         Add support for RGCTX_FETCH.
11018
11019         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
11020         clobbered by the trampoline code.
11021
11022         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
11023         not clobbered by the indirect calling code.
11024
11025 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
11028         to fix the build.
11029
11030 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
11031
11032         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
11033         signature using the compilation mempool otherwise we would leak it.
11034
11035 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
11038         mono_emit_abs_call ().
11039
11040         * patch-info.h: Add GENERIC_CLASS_INIT.
11041
11042         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
11043
11044         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
11045         as their target as a near call.
11046
11047         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
11048         ABS handling code.
11049         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
11050
11051         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
11052         call to a runtime function described by a patch.
11053
11054         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
11055         mono_emit_abs_call, this has the advantage that the ABS handling code in
11056         mono_codegen () can handle them both, and can handle other stuff in the
11057         future without additional code.
11058
11059         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
11060         entry.
11061         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
11062         abs addresses.
11063
11064         * mini.h: Add missing bblock related prototypes.
11065
11066         * mini.h (MonoCompile): Remove unused reverse_inst_list and
11067         reverse_inst_list_len fields.
11068
11069         * mini.c: Refactor this file a bit by moving branch optimizations to 
11070         branch-opts.c.
11071
11072         * method-to-ir.c: Merge generic sharing changes missed earlier.
11073
11074         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
11075
11076         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
11077         shared patches. Process METHODCONST as a shared patch.
11078
11079         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
11080         as it crashes on the 2.0 mscorlib.
11081
11082         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
11083         to cause crashes.
11084         
11085         * aot-compiler.c: Use is_plt_patch () in a few additional places.
11086         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
11087         by IMT.
11088
11089         * aot-compiler.c: Reorganize the got handling code to be a bit more
11090         understandable.
11091
11092 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
11095         mono_patch_info_equals/hash, and use it to massively simplify
11096         get_plt_index ().
11097
11098         * mini.c (mono_patch_info_hash): Simplify this and add support for
11099         more patch types.
11100
11101         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
11102
11103         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
11104         handling code, since an offset is not enough to identify a trampoline.
11105
11106         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
11107
11108 2008-08-17  Mark Probst  <mark.probst@gmail.com>
11109
11110         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
11111
11112         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
11113
11114         * mini-ops.h: Argument and result types for OVF_CARRY ops.
11115
11116         * decompose.c: PPC decompositions for various ops.
11117
11118         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
11119
11120 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
11121
11122         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
11123         call the generic trampoline code using a call, instead of a jump, to
11124         remove some special casing from the generic trampoline code.
11125
11126         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
11127         (mono_codegen): Ditto.
11128
11129         * aot-compiler.c aot-runtime.c: Ditto.
11130
11131         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
11132
11133         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
11134         helper function to find the offset corresponding to a lazy fetch trampoline.
11135
11136         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
11137         when doing generic sharing.
11138
11139         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
11140         places.
11141         
11142         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
11143         mini-trampolines.c to be with the other trampoline creation functions.
11144
11145         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
11146         as it is equal to method->signature in most cases, add a 
11147         mono_emit_method_call_full variant which takes a signature and an imt
11148         argument as well.
11149
11150 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
11151
11152         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
11153         to this function, since it could be computed easily from the method 
11154         argument.
11155         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
11156         more.
11157
11158         * method-to-ir.c mini.c: Remove references to 
11159         compile_generic_method_wo_context.
11160
11161         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
11162         generic method calls.
11163         
11164         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
11165         dimensional non-szarrays.
11166
11167         * mini.c (mini_init): Register mono_array_new_1.
11168
11169         * jit-icalls.c (mono_array_new_1): New jit icall.
11170
11171         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
11172         pointing to the method.
11173
11174         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
11175         method addresses belonging to METHOD_JUMP patches in the 
11176         jump_target_got_slot_hash.
11177         (mono_aot_load_method): Ditto.
11178
11179         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
11180         METHOD_JUMP patches.
11181
11182         * mini.c (mini_create_jit_domain_info): New helper function which 
11183         initializes/frees domain->runtime_info.
11184         (mini_free_jit_domain_info): Ditto.
11185         (mini_init): Install the domain hook functions with the runtime.
11186
11187         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11188         information maintained by the JIT.
11189
11190         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11191         insertion into jump_table_hash into mono_codegen (), also implement proper
11192         locking.
11193
11194         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11195         tail calls, it is already done by the aot code.
11196         
11197         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11198         mechanism on amd64.
11199
11200         * iltests.il.in: Make the jmp test a bit more complex.
11201
11202         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11203         generic instances which doesn't have a token.
11204
11205         * aot-runtime.c (decode_method_ref): Ditto.
11206         
11207         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11208         can handle this case now.
11209         (handle_box): Ditto.
11210
11211 2008-08-15  Geoff Norton  <gnorton@novell.com>
11212
11213         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11214         debugging check.
11215
11216 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11219         calling generic methods.
11220
11221         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11222
11223         * aot-runtime.c (decode_patch_info): Ditto.
11224
11225         * mini.c (mono_resolve_patch_target): Ditto.
11226         
11227         * patch-info.h: Add METHOD_RGCTX.
11228
11229         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11230
11231 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11234         arguments in registers.
11235
11236         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11237         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11238
11239         * mini.c (mini_method_compile): Abort aot compilation for generic
11240         methods if generic sharing is disabled.
11241         
11242         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11243         an mrgctx.
11244
11245         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11246         requiring an mrgctx.
11247
11248         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11249         store instructions when converting a vcall to a normal call.
11250
11251         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11252         mono_arch_find_jit_info.
11253
11254 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11255
11256         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11257         avoid calling mono_method_full_name () for every method even if the
11258         env var is not set.
11259         (check_inline_caller_method_name_limit): Ditto.
11260
11261 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11264         assemblies in one run.
11265
11266         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11267         skipped methods if it is not 0.
11268
11269         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11270
11271 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11272
11273         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11274           MONO_ARCH_HAVE_UNWIND_TABLE.
11275
11276         Contributed under MIT/X11 license.
11277
11278 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11279
11280         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11281           from default optimizaton list on Winx64.
11282
11283         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11284
11285         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11286           the LMF from the MonoJitTlsData structure.
11287
11288         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11289
11290         Contributed under MIT/X11 license.
11291
11292 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * mini.c (sigsegv_signal_handler): Fix the build.
11295
11296         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11297         assembly->aot_module.
11298
11299         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11300         hash table. This simplifies and speeds up a lot of code, and fixes support
11301         for .netmodules.
11302
11303         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11304         with the runtime.
11305
11306         * mini-exceptions.c: Ditto.
11307         
11308         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11309         'native_offset' argument, since these are computed in the 
11310         mono_find_jit_info () function.
11311
11312         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11313         is used by exceptions-ppc.c.
11314
11315         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11316         mono_arch_find_jit_info ().
11317         
11318         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11319         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11320         generic code in mini-exceptions.c.
11321
11322 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11323
11324         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11325
11326         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11327         
11328         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11329         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11330         called while holding the loader lock. Fixes #415608.
11331         (mono_aot_get_method_from_token_inner): Ditto.
11332
11333 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11336         to reduce differences between this and the generic implementation in
11337         mini-exceptions.c.
11338         (ves_icall_get_frame_info): Ditto.
11339
11340         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11341
11342         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11343         longer neccesarry.
11344
11345         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11346         mono_arch_get_call_filter () and make it non-static, for consistency with the
11347         other architectures.
11348
11349 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11350
11351         * mini.c:
11352         * local-propagation.c:
11353         * mini-x86.c: Correct the name of arch defines.
11354
11355 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11356
11357         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11358         NO_EMULATE_LONG_SHIFT_OPS define.
11359
11360 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11361
11362         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11363         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11364
11365         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11366         MACH fixes. Merged from the 2.0 branch.
11367
11368         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11369
11370         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11371         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11372
11373         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11374
11375         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11376         mono_marshal_get_native_wrapper () signature changes.
11377
11378 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11379
11380         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11381         conversion bug under arm.
11382
11383 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11384
11385         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11386
11387         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11388         with overflow checking.
11389
11390 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11391
11392         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11393         to the genmdesc.pl file
11394
11395 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11398         arg_array in the soft-float versions of the LOAD/STORE macros.
11399
11400         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11401         implementation.
11402
11403         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11404
11405 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11408         a float HFA. Fixes #413621.
11409
11410 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11411
11412         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11413         frame_size to args_size. Fixes build.
11414
11415 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11418         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11419
11420         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11421         the stack are not unaligned. Fixes #413247.
11422         
11423 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11424
11425         * mini.c: update jitted methods performance counters.
11426
11427 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11428
11429         * mini-exceptions.c: increase the exceptions thrown performance
11430         counter in mono_handle_exception ().
11431
11432 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11435         can work with netmodules.
11436
11437 2008-07-28  Geoff Norton  <gnorton@novell.com>
11438
11439         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11440         regression tests.
11441
11442 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11445         correct place.
11446
11447 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11448
11449         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11450           The float param registers and other param registers must be the 
11451           same index on Windows x64.
11452
11453         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11454           ArgValuetypeAddrInIReg argument case.  Setting the argument
11455           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11456
11457         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11458           variable computed above as the copy length for arguments of storage
11459           type ArgValuetypeAddrInIReg.
11460
11461         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11462           ArgValuetypeAddrInIReg argument case.  This case will rely on
11463           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11464
11465         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11466           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11467           jump and tail call instructoins as they do not follow the typical call behavior.
11468
11469         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11470           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11471           local variable and pass the local variable by reference to the called method.
11472
11473         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11474           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11475           of a struct is passed in a register it must be saved with the other
11476           volatile argument on the stack.
11477
11478         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11479           frame pointer the stack adjustment value must be saved to the unwind 
11480           info structure.
11481
11482         Contributed under MIT/X11 license.
11483
11484 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11485
11486         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11487         which got lost in the merge.
11488
11489 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11490
11491         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11492         build.
11493
11494         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11495         
11496         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11497         icalls, since they won't be patched.
11498
11499         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11500         different code sequence when running under valgrind to prevent some valgrind
11501         errors.
11502
11503         * iltests.il.in: Add new regression test.
11504
11505         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11506         end with a throw.
11507
11508         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11509         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11510
11511         * iltests.il.in: Add new test.
11512
11513         * aot-compiler.c: Fix some warnings.
11514
11515         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11516         Fixes #412494.
11517
11518 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11521         (mini_usage_jitdeveloper): Add a missing --wapi option.
11522
11523 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11524
11525         * mini-codegen.c: Simplify the is_fp macros.
11526         (free_up_ireg): Remove, use free_up_reg instead.
11527         (free_up_reg): Fix the fp case.
11528
11529 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11530
11531         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11532         lowered earlier.
11533
11534         * exceptions-x86.c: Merge some changes which seemed to have got lost
11535         in the linear-ir merge.
11536
11537         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11538
11539         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11540         long vreg volatile even if the variable was already created.
11541
11542         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11543         volatile variables.
11544
11545 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11548
11549         * mini.c (mono_jit_compile_method_inner): Add support for 
11550         MONO_EXCEPTION_BAD_IMAGE.
11551
11552         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11553         mini_method_get_context () returns NULL. Fixes #356531.
11554
11555         * mini.c (mono_method_to_ir): Ditto.
11556         
11557         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11558         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11559
11560 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11563         in the LDFTN implementation.
11564
11565 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11566
11567         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11568         code, patch calls to icalls, too, even if they're not in the
11569         shared generic code hash.  Fixes #411962.
11570
11571 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11572
11573         * cpu-x86.md: Increase the length of the fcall opcodes.
11574
11575         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11576         calls returning floats.
11577
11578         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11579         on NEWARR.
11580         
11581         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11582         missed earlier.
11583
11584         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11585         into the domain->method_code_hash.
11586
11587         * aot-compiler.c: Fix win32 build.
11588
11589         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11590         
11591         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11592         gshared NEWARR implementation.
11593
11594         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11595
11596         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11597         can be used outside of method_to_ir.
11598
11599         * mini.h (MonoCompile): Add arg_types field.
11600
11601         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11602         
11603         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11604         the values of the local arg_array and param_types array.
11605
11606 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11607
11608         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11609         got accesses might only get generated later when NEWOBJ is decomposed.
11610         
11611         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11612         looking up the native code of the target method when a delegate is called
11613         for the first time.
11614
11615         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11616         optimization.
11617
11618         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11619
11620         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11621         AOT work on platforms without a working dlsym implementation.
11622
11623         * mini.h: Bump AOT image format version.
11624         
11625 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11626
11627         * mini-exceptions.c: Free a MonoType with
11628         mono_metadata_free_type() instead of g_free().
11629
11630         * aot-runtime.c: Free a MonoType.
11631
11632 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11635         optimization.
11636
11637         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11638         fp stack on x86.
11639
11640 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11641         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11642         profiler hook.
11643
11644 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11645
11646         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11647         NEWOBJ calls on valuetypes.
11648
11649         * iltests.il.in: Add new test.
11650
11651         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11652
11653 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11654
11655         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11656         is no longer needed.
11657
11658         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11659         non register sized integer arguments.
11660         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11661         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11662         emit_memcpy2 ().
11663
11664         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11665         CEE_MONO_RETOBJ.
11666         
11667         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11668         two a binop with different sized arguments is emitted.
11669
11670         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11671         instruction in the ins==NULL case.
11672
11673 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11674
11675         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11676
11677         * mini-x86.c: Fix osx build.
11678
11679         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11680         opcodes as well.
11681
11682         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11683         instruction for non int sized variables.
11684
11685         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11686         implementation.
11687
11688 2008-07-23  Robert Jordan  <robertj@gmx.net>
11689
11690         * method-to-ir.c: Fix MSVC build.
11691
11692 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11693
11694         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11695         a non int sized type, widen it to an int since newer versions of gcc seem to
11696         generate code which needs this.
11697
11698         * ssa2.c abcremoval2.c: Fix warnings.
11699
11700         * *: Merge the Linear IR branch.
11701
11702         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11703         the ChangeLog file there describes all the changes done over the years. 
11704         Further documentation can be found at www.mono-project.com/Linear_IL.
11705
11706 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11707
11708         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11709           The float param registers and other param registers must be the 
11710           same index on Windows x64.
11711
11712         Contributed under MIT/X11 license.
11713
11714 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11715
11716         * mini.c: Make the previous fix GC safe.
11717
11718 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11719
11720         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11721
11722 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11723
11724         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11725           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11726           ArgValuetypeAddrInIReg instead.
11727
11728         Contributed under MIT/X11 license.
11729
11730 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11731
11732         * mini-codegen.c (get_register_spilling): Fix a warning.
11733
11734 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11735
11736         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11737         for types which the initialization fails. Raises the provided exception
11738         at the right stop after cleanup.
11739
11740 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11741
11742         * aot-compiler.c: Free most of the memory allocated during compilation.
11743
11744         * mini.c (mini_parse_debug_options): Fix a leak.
11745         
11746         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11747         during aot compilation.
11748
11749 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11750
11751         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11752         it has too much register pressure.
11753
11754 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11755
11756         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11757
11758 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11761         on x86.
11762
11763         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11764         on amd64 similar to the way it is done on arm.
11765
11766         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11767
11768         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11769         consistency, normalize error messages, avoid loading aot-only modules in
11770         normal mode.
11771
11772         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11773         for consistency.
11774
11775         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11776
11777 2008-07-11  Martin Baulig  <martin@ximian.com>
11778
11779         * debug-debugger.h
11780         (MonoDebuggerInfo): Add `interruption_request'.
11781
11782 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11783
11784         * aot-compiler.c (emit_plt): Remove some dead code.
11785
11786         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11787
11788         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11789         return the plt info offset belonging to a given plt entry.
11790
11791         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11792         mono_aot_get_plt_info_offset.
11793         
11794         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11795         similar to the amd64 code by makeing jumps through a separate jump table 
11796         instead of embedding the jump addresses into the code.
11797
11798 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11799
11800         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11801         method.
11802
11803 2008-07-10  Martin Baulig  <martin@ximian.com>
11804
11805         * mini.c (mini_method_compile): Disable generics sharing when
11806         running in the debugger.
11807
11808 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11809
11810         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11811
11812         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11813         the local register allocator from running out of registers on x86 when 
11814         using aot.
11815
11816 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11817
11818         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11819         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11820         C4146.
11821
11822         Contributed under MIT/X11 license.
11823
11824 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11827         speed up the assembler.
11828
11829 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11832         support.
11833
11834         * mini.c: Move the soft float handling macros a bit earlier, add 
11835         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11836         place.
11837
11838         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11839
11840         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11841         read-only to help catch code allocation requests.
11842         
11843         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11844         and turn it off when using --aot-only or when compiling with --aot=full.
11845
11846         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11847         jump table for switches from the normal domain mempool, not the code
11848         manager.
11849
11850         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11851         unbox trampoline which handles aot-only mode too.
11852
11853         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11854         an AOTed unbox trampoline.
11855
11856         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11857
11858 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11859
11860         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11861         ""
11862
11863         Contributed under MIT/X11 license.
11864
11865 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11866
11867         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11868           the unwind information for the method at the end of the allocated block.
11869           
11870         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11871           MonoCompileArch to hold the unwind info for SEH on Winx64
11872         
11873         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11874           frame pointer info for the method being compiled.
11875           
11876         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11877           the call to mono_exception_from_token.
11878           
11879         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11880           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11881           information is stored a the end of the method block because it is all 32-bit offset based.
11882
11883         Contributed under MIT/X11 license.
11884
11885 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11888
11889         * wapihandles.c: Fix warnings.
11890
11891         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11892         mode.
11893
11894         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11895         mono_jit_compile_method in aot-only mode since that calls the type 
11896         initializer.
11897         
11898         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11899         get_delegate_invoke_impl in aot-only mode.
11900
11901         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11902
11903 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11906
11907         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11908         is on by default.
11909
11910         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11911
11912         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11913         init trampoline from the AOT file as well.
11914
11915         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11916         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11917         code.
11918
11919         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11920         mono_init.
11921
11922         * exceptions-amd64.c: Add _full variants for the remaining exception code
11923         creation functions as well, allow emission of relocatable code, remove
11924         caching since that is now done by the caller.
11925
11926         * mini-exceptions.c: Add _full variants for the remaining exception code
11927         creation functions as well, add aot-only support.
11928
11929         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11930         if we can determine a proper token for them.
11931         (add_wrappers): Add a few more wrappers.
11932         (emit_method_code): Remove some dead code.
11933         (emit_trampolines): Emit exception code too.
11934
11935         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11936
11937         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11938         mono_array_new_va which avoids varargs.
11939
11940         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11941
11942         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11943         mono_arch_create_specific_trampoline () in all places.
11944
11945         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11946         a bit so it can be used for other things as well.
11947         
11948         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11949         on demand as well.
11950
11951         * exceptions-amd64.c: Rename the caching from the exception code creation
11952         functions, it is done by the caller instead.
11953         
11954         * exceptions-amd64.c: Change the signature of the exception code creation 
11955         functions to allow the creation of relocatable code later.
11956
11957         * mini-exceptions.c: Add a set of functions to query the various 
11958         runtime-generated exception functions.
11959
11960         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11961         mono_arch_.. () functions.
11962         
11963 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11964
11965         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11966
11967         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11968
11969         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11970         (mini_get_vtable_trampoline): Ditto.
11971
11972         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11973         code in the AOT case by returning the code size and a list of relocations to
11974         the caller.
11975
11976         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11977
11978 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11979
11980         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11981           clean the stack.
11982
11983         Contributed under MIT/X11 license.
11984
11985 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11986
11987         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11988         so the buffer size can be computed correctly. Fixes #404735.
11989
11990         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11991         normally as cfg->debug_info is already freed.
11992
11993 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11994
11995         * mini-amd64.c: For calls returning vtypes in registers, don't store
11996         the return address on the stack, instead allocate a separate local for
11997         it. Fixes #404729.
11998
11999 2008-07-05  Mark Probst  <mark.probst@gmail.com>
12000
12001         * mini-trampolines.c, mini.h: Add an argument to
12002         mono_create_jit_trampoline_in_domain() for turning off the adding
12003         of the sync wrapper.
12004
12005         * mini.c: Use the JIT trampoline without sync instead of
12006         ldftn_nosync in static RGCTX invoke wrappers so that the call can
12007         be patched.
12008
12009 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12010
12011         * driver.c: Turn on GSHARED optimization by default.
12012
12013 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
12016         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
12017
12018         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
12019         create a variant of the generic trampoline code callable from AOTed trampolines.
12020
12021         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
12022         trampoline code callable from AOTed trampolines.
12023
12024         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
12025
12026 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12027
12028         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
12029         pass-through manner.
12030
12031         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
12032         and don't fail sharing for them anymore.
12033
12034         * mini-exceptions.c: Handle exceptions in shared generic methods.
12035
12036         * generic-sharing.c: When checking the context of a generic
12037         method, also check its class's context.  Don't treat wrappers as
12038         sharable.
12039
12040         * mini-trampolines.c: Some code factored out to
12041         metadata/generic-sharing.c.  Handle the MRGCTX case.
12042
12043         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
12044         we must deal with the method being of another instantiation of the
12045         class.  Add static rgctx invoke wrappers to generic methods.
12046
12047 2008-07-04  Mark Probst  <mark.probst@gmail.com>
12048
12049         * mini.c: Provide all jit infos of generic shared methods with a
12050         generic jit info.
12051
12052         * mini-exceptions.c: Handle the new situation that a generic info
12053         might be available, but not info about the this/vtable/mrgctx
12054         variable.
12055
12056 2008-07-03  Mark Probst  <mark.probst@gmail.com>
12057
12058         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
12059         generic methods.
12060
12061 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
12062
12063         * dominators.c (check_dominance_frontier): Fix a warning.
12064
12065         * mini.h: Add some missing prototypes.
12066
12067         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
12068
12069         * driver.c (mono_jit_init_version): Correct the comments since the first
12070         argument should be the name of the root domain, not a filename.
12071
12072         * aot-runtime.c (make_writable): Error out if this is called while running
12073         with --aot-only.
12074         (load_aot_module): Ditto.
12075
12076         * aot-compiler.c: Really fix the computation of method indexes.
12077
12078         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
12079         optimizations as this is no longer called frequently.
12080
12081         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
12082         method and the invoke impl code and pass it to the delegate trampoline instead of
12083         just the delegate class.
12084
12085 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * aot-compiler.c: Fixup the computation of method indexes.
12088         (add_wrappers): Create the base methods of the runtime invoke wrappers using
12089         the method builder infrastructure.
12090
12091         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
12092         has no header.
12093
12094         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
12095         mode, load the method right away instead of creating a trampoline.
12096
12097         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
12098
12099         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
12100         some checks a bit.
12101
12102 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
12105         (mono_aot_load_method): Use method_index instead of method->token.
12106
12107         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
12108         can handle icalls etc. properly.
12109
12110         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12111
12112         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
12113
12114         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
12115         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
12116         JIT_ICALL_ADDR patch type.
12117
12118         * patch-info.h: Add JIT_ICALL_ADDR patch type.
12119
12120         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
12121         request flag.
12122         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
12123
12124         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
12125
12126 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
12127
12128         * mini.c: Use domain->jit_code_hash_lock for controlling access to
12129         domain->jit_code_hash.
12130
12131 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
12134
12135 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
12136
12137         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
12138         get_this_arg_from_call, let it compute it when needed.
12139
12140         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
12141         gsctx from code only when needed.
12142
12143         * mini-trampolines.c (get_generic_context): Rename this to 
12144         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
12145         it can be called by the arch backends.
12146
12147         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
12148
12149 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
12150
12151         * driver.c (mono_main): Add experimental --aot-only command line option.
12152
12153         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
12154         set.
12155
12156 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
12157
12158         * driver.c (DllMain): Remove mono_module_handle.
12159
12160         Contributed under MIT/X11 license.
12161
12162 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
12163
12164         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
12165         for emitting methods which are not in the source assembly. Detect and report
12166         failure of assembling+linking.
12167         
12168         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
12169
12170         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
12171
12172 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
12173
12174         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
12175
12176 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
12177
12178         * mini.h: Remove some obsolete prototypes.
12179
12180         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
12181
12182 2008-06-24  Mark Probst  <mark.probst@gmail.com>
12183
12184         * mini.c (get_object_generic_inst): Variable-sized arrays are not
12185         supported by Visual Studio, so use alloca().
12186
12187 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12188
12189         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12190         Fixes #402585.
12191
12192 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12193
12194         * mini.c: Fail sharing of a generic method if it contains an open
12195         catch clause (because we don't pass MRGCTXs yet).
12196
12197 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12198
12199         * mini.c: When compiling a method with generic sharing, insert the
12200         method instantiated with an all-Object generic context into the
12201         jit info table, instead of the context of the first instantiation
12202         of the method we happen to compile.
12203
12204 2008-06-18  Martin Baulig  <martin@ximian.com>
12205
12206         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12207         `major_version' and `minor_version'.
12208
12209 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12210
12211         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12212         mono_method_is_generic_sharable_impl() takes an additional
12213         argument specifying whether to treat type variables as reference
12214         types.
12215
12216 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12217
12218         * mini.h: Removed obsolete prototypes.
12219
12220 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12221
12222         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12223         already handle them.
12224
12225 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12226
12227         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12228         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12229         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12230         tramp-x86.c: Added a MonoGenericContext* argument to
12231         mono_arch_get_unbox_trampoline() so that it can call other
12232         functions which require it.
12233
12234 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12235
12236         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12237         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12238         mono_arch_get_this_arg_from_call() takes a
12239         MonoGenericSharingContext* as well.
12240
12241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12242
12243         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12244         implement generic sharing of unbox.
12245
12246 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12247
12248         * mini.c: Don't compute the vtable to determine whether a field is
12249         special static, because it might not work for open types.
12250
12251 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12252
12253         * mini.c: Removed the unused token_type and token_source arguments
12254         from get_runtime_generic_context_ptr().
12255
12256 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12257
12258         * mini.c (ADD_BINOP): fix the build
12259
12260 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12263         a widening op.
12264
12265 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12266
12267         * mini.h: Removed class relations enum that's not used anymore.
12268
12269 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12270
12271         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12272
12273         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12274         the lazy fetch trampoline access code.
12275
12276 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12279
12280 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12283
12284         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12285
12286         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12287
12288 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12291         intrinsics.
12292
12293         * mini-ops.h: Add MIN/MAX_UN opcodes.
12294
12295         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12296         intrinsics.
12297
12298         * basic-math.cs: Add more min/max tests.
12299
12300         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12301
12302 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12303
12304         * mini.c: Small fix in the prologue of emit_castclass.
12305
12306 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12309
12310         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12311         do not work even for unsigned types. Fixes #400014.
12312
12313         * basic-math.cs: Add regression tests for unsigned Min/Max.
12314
12315 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12316
12317         * mini.c: Added additional context_used argument to several
12318         functions, which will be needed for sharing generic methods.  Use
12319         GET_RGCTX macro wherever appropriate.  Declare only one
12320         context_used in mono_method_to_ir().
12321
12322 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12323
12324         * mini.c, generic-sharing.c: Removed generic class relations.
12325
12326         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12327         functions due to MRGCTX changes.
12328
12329 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12330
12331         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12332         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12333         with calculated IMT.
12334
12335         * mini.c: Generic sharing of calls via generic interfaces.
12336
12337         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12338         generic method with non-constant MonoGenericContext*.  Instead,
12339         the context is taken out of the method itself.
12340
12341 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12342
12343         * mini.c: Generic sharing of ldvirtftn.
12344
12345 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12346
12347         * mini.c: Generic sharing of ldftn.
12348
12349 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12350
12351         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12352
12353 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12354
12355         * mini.c: Generic sharing of the special case of ldtoken followed
12356         by a call to GetTypeFromHandle.
12357
12358 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12359
12360         * mini.c: Generic sharing of box for nullable types.
12361
12362 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12365         are passed on the stack. Fixes #324807.
12366
12367 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12368
12369         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12370         for the ArgValuetypeAddrInIReg case.
12371
12372         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12373         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12374
12375         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12376         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12377         local variable and pass the local variable by reference to the called method.
12378           
12379         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12380         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12381
12382         Contributed under MIT/X11 license.
12383
12384 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12385
12386         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12387
12388         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12389         everything.
12390
12391 2008-06-10  Martin Baulig  <martin@ximian.com>
12392
12393         * debug-mini.c
12394         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12395
12396 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12397
12398         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12399         possible error when no arguments are passed.
12400
12401         Contributed under MIT/X11 license.
12402
12403 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12404
12405         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12406         where the file name is NULL.
12407
12408 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * mini.c: Fix s390 build.
12411
12412 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12413
12414         * trace.c (mono_trace_parse_options): Fix warnings.
12415
12416         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12417
12418 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * mini.c (remove_block_if_useless): Avoid printing the method name.
12421         
12422         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12423         MONO_INST_NEW.
12424
12425         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12426         LMF. Not yet used.
12427
12428         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12429         translated code after it has been patched.
12430
12431 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12432
12433         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12434         avoid problems during code patching on SMP systems.
12435         (emit_call): Avoid adding a patch info which is already added by 
12436         emit_call_body.
12437         (mono_arch_emit_exceptions): Ditto.
12438
12439 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12442         MONO_TYPE_ISSTRUCT already checks for it.
12443
12444 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12445
12446         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12447           structs with floats on Winx64 the float registers are not used.  
12448           The integer registers are always used..
12449         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12450           only one register will be used and only if the size of the struct 
12451           is 1,2,4, or 8 bytes.
12452
12453         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12454           to work for Winx64.
12455
12456         Contributed under MIT/X11 license.
12457
12458 2008-06-05  Martin Baulig  <martin@ximian.com>
12459
12460         * debug-debugger.c (debugger_lookup_class): Also call
12461         mono_class_setup_methods() here; we're only called from RTI.
12462
12463 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12464
12465         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12466         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12467         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12468         Post-process object files and add dtrace-generated object, if necessary.
12469
12470         Contributed under MIT/X11 license.
12471
12472 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12473
12474         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12475         element class.
12476
12477         * mini.c: Generic sharing for unbox.any and castclass.
12478
12479 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12480
12481         * mini.c: Ignore tailcall prefix in shared generic code and when
12482         doing calls which require a vtable/rgctx argument.
12483
12484 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12485
12486         * mini.c: Don't free the JIT info.
12487
12488         * driver.c: Changes in the JIT info table testing code.
12489
12490 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12493         interruption. Fix some warnings.
12494
12495         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12496         interruption_checkpoint.
12497
12498 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12499
12500         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12501         from embedding applications.
12502
12503 2008-06-02  William Holmes  <billholmes54@gmail.com>
12504
12505         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12506           reserving 32 bytes on the stack when making calls. 
12507
12508         Contributed under MIT/X11 license.
12509
12510 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12511
12512         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12513         the linear IL branch.
12514
12515         * driver.c: Print out more information for --version on arm.
12516
12517 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12518
12519         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12520         bb_exit instead, since out of line bblocks might not actually be emitted
12521         out-of-line.
12522         
12523         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12524         maximum epilog size for out of line bblocks if tracing is enabled.
12525
12526         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12527
12528 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12529
12530         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12531
12532 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12533
12534         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12535         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12536         opcodes.
12537
12538 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12541         the 'value' to store is a constant.
12542
12543         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12544
12545         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12546         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12547
12548 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12551         for accessing method->generic_container.
12552
12553 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12556         
12557         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12558
12559         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12560
12561         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12562         fails.
12563
12564 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12567
12568         * mini.c: Handle the case when mono_class_vtable () fails.
12569
12570 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12571         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12572         the stat profiler.
12573
12574 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12575
12576         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12577         together with domain sharing.
12578
12579 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12580
12581         * mini.c: Treat callvirts to final methods like non-virtual calls
12582         when doing generic sharing, i.e. look them up in the runtime
12583         generic context.
12584
12585 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12586
12587         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12588         with computed types (for generic sharing).
12589
12590         * mini.c: Generic sharing for mkrefany and refanyval.
12591
12592 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12593
12594         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12595         possible.
12596
12597         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12598         the generic sharing code.
12599         
12600         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12601         when needed.
12602
12603 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12604
12605         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12606
12607 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12608
12609         * driver.c: updated copyright date
12610
12611 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12612
12613         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12614         needed.
12615
12616 2008-05-19  Martin Baulig  <martin@ximian.com>
12617
12618         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12619         pointing to the new `_mono_debug_using_mono_debugger' variable.
12620
12621         * driver.c
12622         (mono_main): Check mono_debug_using_mono_debugger() rather than
12623         the `MONO_INSIDE_MDB' environment variable to check whether we're
12624         inside the debugger.
12625
12626 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12627
12628         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12629         argument.
12630
12631 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12632
12633         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12634
12635         * mini.c: Added mini_assembly_can_skip_verification. This
12636         function checks if the assembly requested to skip verification. 
12637         Fixes part of #387274.
12638
12639 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * mini.c (mini_get_method): Disable the check for open generic classes when
12642         using generic sharing.
12643
12644         * generics.cs: Add a test for #387034.
12645
12646         * mini.c (mini_get_method): Check whenever the method class is an open generic
12647         type, and return NULL in that case, causing a verification error. Fixes
12648         #384123.
12649
12650 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12651
12652         * driver.c (mono_main): Revert r102623. The right
12653         thing to do is to enable the verifier under verifiable
12654         unless a --security flag was passed.
12655
12656         We need this non-trivial behavior for --verify-all otherwise
12657         mcs-compileall won't be able to use it. As it needs everything to
12658         be verified under validil.
12659
12660 2008-05-06  Martin Baulig  <martin@ximian.com>
12661
12662         Fix #383749.
12663
12664         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12665         (mono_debugger_thread_cleanup): Likewise.
12666         (mono_debugger_extended_notification): Likewise.
12667
12668 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12669
12670         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12671         against both inflated and non-inflated methods. We need to check against the
12672         generic definition for cases where the instantiated method is not visible.
12673         We need to check against the inflated types for cases where the instantiation
12674         changes any super type. This fixes #382986.
12675
12676         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12677         that check for visibiliy as generic params only appears as the type subject
12678         of tokens on call opcodes. Field manipulation and ldftn must always
12679         target an exact type.
12680
12681 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12682
12683         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12684         if no related --security flag is passed.
12685
12686 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12687
12688         * mini-arch.h: Prepare support for ppc64.
12689
12690         Contributed under MIT/X11 license.
12691
12692 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12693
12694         * aot-runtime.c: Prepare support for ppc64.
12695
12696         Contributed under MIT/X11 license.
12697
12698 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12699
12700         * mini-ops.h: Prepare support for ppc64.
12701
12702         Contributed under MIT/X11 license.
12703
12704 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12705
12706         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12707
12708         Contributed under MIT/X11 license.
12709
12710 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12713         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12714         assemblies on windows.
12715
12716 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12717
12718         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12719         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12720         * main.c: Use UTF-8 encoded command line instead of Windows default code
12721         page on Windows to support Unicode.
12722         * driver.c (DllMain): New function for mixed-mode assembly support.
12723         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12724         export __stdcall functions without decoration.
12725
12726         Contributed under MIT/X11 license.
12727
12728 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12729
12730         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12731         saving it very early.
12732
12733 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12734
12735         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12736         deleted.  The only way to access the new RGCTX is via the
12737         trampline.
12738
12739         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12740         vtable instead of the RGCTX to static methods.
12741
12742         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12743         accessing the new RGCTX.
12744
12745         * generic-sharing.c: There is no separation between self, type
12746         arguments and other types in the RGCTX anymore.
12747
12748 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12749
12750         * mini-amd64.c (add_general): Remove previous stack adjustment.
12751         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12752         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12753         for 32 bytes of stack space reserved for all calls.
12754         
12755         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12756         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12757         adjustment.
12758         
12759         Code contributed under MIT/X11 license.
12760
12761 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12762
12763         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12764         against the root definition, peeling out method and type instantiations.
12765         Cache verify success results, code that fails verification is still
12766         checked multiple times.
12767
12768 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12771
12772 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12773
12774         * mini-amd64.c (add_general): Always increment stack on Win64.
12775         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12776         on Win64.
12777         
12778         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12779         stack based argument handling on Win64.
12780         
12781         Code contributed under MIT/X11 license.
12782
12783 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12784
12785         * Makefile.am (version.h): Add support for git-svn.
12786
12787 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12790         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12791         avoiding allocations and libc functions which might deadlock.
12792         
12793         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12794         'no-gdb-backtrace' option is set.
12795
12796         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12797
12798         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12799
12800 2008-04-21  Martin Baulig  <martin@ximian.com>
12801
12802         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12803         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12804
12805 2008-04-21  Martin Baulig  <martin@ximian.com>
12806
12807         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12808         `thread_vtable', `event_handler_ptr' and `event_handler'.
12809
12810 2008-04-21  Martin Baulig  <martin@ximian.com>
12811
12812         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12813         allows delayed initialization of the `executable_code_buffer' when
12814         attaching.
12815
12816 2008-04-21  Martin Baulig  <martin@ximian.com>
12817
12818         * mini.h (mono_debugger_create_notification_function): Removed.
12819         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12820
12821         * mdb-debug-info64.s
12822         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12823
12824         * mdb-debug-info32.s
12825         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12826
12827         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12828         currently only works on x86 and x86_64, so don't create it on ppc.
12829
12830 2008-04-21  Martin Baulig  <martin@ximian.com>
12831
12832         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12833
12834         * mini.c
12835         (mini_method_compile): In the fp elimination check, check
12836         `debug_options.mdb_optimizations' in addition to
12837         mono_debug_using_mono_debugger().       
12838
12839         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12840         disable some JIT optimizations which are only disabled when
12841         running inside the debugger.
12842         Added `--help-debug' option to describe the debugging options.
12843         (parse_debug_options): New static function to parse the `--debug'
12844         options, so we can easily add more stuff in future.
12845
12846 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12849         the method has no body.
12850
12851 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12852
12853         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12854         assembly is not allowed in MSVC 64-bit compiler. 
12855         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12856         as we get floating point exceptions everywhere.
12857         
12858         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12859         correctly align arguments for call to throw_exception.
12860         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12861         
12862         Code contributed under MIT/X11 license.
12863
12864 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12867
12868 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12871
12872         * mini-amd64.c (NEW_INS): Set cil_code.
12873
12874         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12875         from mini-amd64.c so all debugger related logic is in one place.
12876
12877         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12878         later won't have a random ip assigned to them.
12879
12880 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12881
12882         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12883         the arch specific function initializes code_size.
12884         (mono_create_delegate_trampoline): Ditto.
12885
12886         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12887         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12888         platforms.
12889
12890         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12891         running under the debugger.
12892
12893         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12894         debugger.
12895
12896         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12897         debugger. Also move the disabling of optimizations here from driver.c.
12898         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12899         debugger.
12900
12901         * mini.h (MonoCompile): Add a few new flags.
12902
12903 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12906         so the cil_code field of created MonoInst's is properly set.
12907         (mini_select_instructions): Ditto.
12908
12909         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12910         (MONO_INST_NEW_CALL): Ditto.
12911
12912         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12913         in many places so the ins->cil_code field is properly initialized.
12914
12915         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12916         place.
12917
12918 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * mini.c (mini_method_compile): Print a different message when compiling a 
12921         shared method.
12922         
12923         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12924         > 1.
12925
12926 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12927
12928         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12929         SSE2 instructions.
12930
12931         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12932         
12933 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * mini.c (handle_stack_args): Make this return void since its return value was
12936         never used. Also set cfg->unverifiable for invalid IL instead of calling
12937         G_BREAKPOINT ().
12938
12939 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12940
12941         * mini.c: Make sure "this" is live in catch clauses with type
12942         variables in shared generic code.
12943
12944 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12945
12946         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12947         generic_class_is_reference_type() to ensure the proper behaviour
12948         when sharing generic code and the type in question is a type
12949         argument.
12950
12951 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12954         race conditions when printing thread dumps. Fixes #377738.
12955
12956 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12957         
12958         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12959         shows up when both MonoInst arguments can cause aliasig.
12960         There is likely no way in the current JIT to trigger this problem, but
12961         it showed up in the development of generics sharing, when in a new
12962         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12963         When the generics sharing code will be committed, its tests will be
12964         valid also for this bug.
12965
12966 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12967
12968         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12969         PATCH_INFO_METHOD.
12970
12971         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12972         NULL.
12973
12974 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12977         use a more detailed exception message for InvalidCastException.
12978
12979         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12980
12981         * driver.c (mono_main): Add --debug=casts option to turn on better 
12982         InvalidCastException message details.
12983
12984         * mini.c (mini_get_debug_options): New helper function to return the address of
12985         the debug_options variable.
12986
12987         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12988         the jit_tls TLS variable.
12989
12990         * mini.c (mono_jit_tls): New TLS variable.
12991
12992         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12993         option is used.
12994
12995 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12996
12997         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12998
12999         * mini.c: Removed verifer related stuff, code moved to verify.c.
13000
13001         * driver.c: Using code from verify.c instead of mini.c.
13002
13003 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
13006         longer valid.
13007
13008 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
13009
13010         * mini.c (check_for_method_verify): Enabling verification of
13011         corlib if mono_verify_all is set. Bugs in the verifier preventing that
13012         have been fixed.
13013
13014 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
13015
13016         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
13017         caller saved registers as well.
13018         
13019         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
13020         saved registers as well.
13021
13022 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
13023
13024         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
13025
13026         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
13027         code.
13028
13029 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
13030
13031         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
13032         to get_call_info.
13033         (get_call_info): Take a gsctx argument instead of 'cfg'.
13034
13035 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
13038         mono_verify_all is set.
13039
13040         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
13041
13042         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
13043
13044 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
13047         an exception.
13048
13049         * driver.c mini.c mini.h: Add a --verify-all development option to test the
13050         verifier and the code generated by the compiler.
13051
13052 2008-03-25  Mark Probst  <mark.probst@gmail.com>
13053
13054         * mini.c: Generic sharing of the non-nullable case of the box
13055         instruction.
13056
13057 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * inssel.brg: Fix the build.
13060
13061         * iltests.il.in: Add a test for lconv.ovf.u8.un.
13062
13063 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
13064
13065         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
13066         Array:Address. Fixes #372410.
13067
13068         * iltests.il.in: New tests for readonly prefix.
13069
13070 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
13073         mini-trampolines.c.
13074
13075         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
13076         mini-exceptions.c.
13077
13078         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
13079         
13080         * mini.c (mono_decompose_op_imm): New helper function.
13081
13082         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
13083         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13084         return value.
13085
13086         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13087         mono_arch_output_basic_block. Fix warnings.
13088
13089         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
13090         for now.
13091
13092 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
13093
13094         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
13095         since the extra frame is now detected automatically inside the loop.
13096
13097         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
13098         opts which are now in mono_peephole_ins ().
13099         
13100         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
13101
13102         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
13103         frames and skip duplicate managed-to-native frames. Fixes #367665.
13104
13105         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13106         opts which are now in mono_peephole_ins ().
13107         (mono_arch_peephole_pass_2): Ditto.
13108
13109         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
13110
13111         * mini-codegen.c (mono_peephole_ins): New helper function containing the
13112         arch independent peephole optimizations.
13113
13114         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
13115         opts which are now in mono_peephole_ins ().
13116
13117         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
13118         
13119         * mini-s390.c (mono_arch_output_basic_block): Fix build.
13120
13121         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
13122         pattern.
13123
13124         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
13125         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
13126         opcode. 
13127
13128 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
13131         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
13132         return value.
13133
13134         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
13135         mono_arch_output_basic_block. Fix warnings.
13136
13137 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13138
13139         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13140         conv.ovf.u.un.
13141
13142 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13143
13144         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
13145         conv.ovf.u.un.
13146
13147         * iltests.il: Add new tests.
13148
13149 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
13150
13151         * mini.c: Removed Windows version macros.
13152
13153 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13154
13155         * generic-sharing.c: Put reflection types in the extensible part
13156         of the runtime generic context.
13157
13158         * mini.c: Generic sharing of the GetTypeHandle special case of the
13159         ldtoken instruction.
13160
13161 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
13162
13163         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
13164
13165         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
13166         
13167         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
13168         consistency with the other version on the linear IR branch.
13169
13170         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
13171
13172         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
13173
13174         * iltests.il.in: Add new tests.
13175
13176 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
13177
13178         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
13179
13180         * iltests.il.in: Add new tests.
13181
13182 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13183
13184         * mini.c: Two variables with the same name were declared in
13185         nesting contexts and one wasn't initialized.  Fixed.
13186
13187 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13188
13189         * mini.c: Generic sharing of the initobj instruction.
13190
13191 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13192
13193         * mini.c: make the test to optimize ldtoken from typeof() more
13194         precise.
13195
13196 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13197
13198         * mini.c: Generic sharing of the initobj instruction for reference
13199         types.
13200
13201 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13202
13203         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13204         the mono_breakpoint_clean_code() code to perform bound checks.
13205
13206 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13207
13208         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13209         mono_arch_patch_callsite() to include the start of the managed method
13210         to be able to perform bound checks.
13211
13212 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13213
13214         * mini.c: Generic sharing for the isinst instruction.
13215
13216 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13217
13218         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13219         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13220         with the runtime generic context argument.
13221
13222         * mini.c: Share calls to several types of unsharable methods by
13223         putting the address of the method code in the runtime generic
13224         context and doing an indirect call.
13225
13226         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13227         to switches.
13228
13229 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13230
13231         * generic-sharing.c: Change due to a change in the runtime genric
13232         context API.
13233
13234 2008-03-15  Martin Baulig  <martin@ximian.com>
13235
13236         * tramp-x86.c
13237         (mono_arch_nullify_class_init_trampoline): Add call to
13238         mono_breakpoint_clean_code() to make things work when running
13239         inside the debugger.
13240
13241         * tramp-amd64.c
13242         (mono_arch_nullify_class_init_trampoline): Add call to
13243         mono_breakpoint_clean_code() to make things work when running
13244         inside the debugger.
13245
13246 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13247
13248         * inssel-long.brg (reg): Fix 64 bit build.
13249
13250 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13251
13252         * mini.c, mini.h: Share static generic code by passing it an
13253         implicit argument pointing to the runtime generic context.
13254
13255         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13256         inssel-long32-mips.brg: New opcodes for calling shared static,
13257         which need to be passed the runtime generic context.
13258
13259         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13260         argument on the stack in the prologue if needed.  New function for
13261         finding the runtime generic context argument from the registers
13262         saved by the trampoline.
13263
13264         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13265         runtime generic context argument.
13266
13267         * tramp-amd64.c: Also restore the register used for the runtime
13268         generic context argument.
13269
13270         * mini-trampoline.c: Resolve shared static calls by consulting the
13271         runtime generic context via the new argument.
13272
13273         * generic-sharing.c: Add an argument to sharability-checking
13274         functions that specifies whether type variables should be treated
13275         as sharable type arguments.
13276
13277         * inssel-x86.brg: Removed a superfluous, buggy rule.
13278
13279         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13280         to switches.
13281
13282 2008-03-14  Martin Baulig  <martin@ximian.com>
13283
13284         * debug-debugger.c (main_thread_handler): Call
13285         mono_runtime_run_main() without sending any notifications.
13286
13287         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13288
13289 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13292
13293 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13294
13295         * tramp-x86.c: Fixed register restore offsets in the trampoline
13296         code for ECX and EDX.
13297
13298 2008-03-12  Geoff Norton  <gnorton@novell.com>
13299
13300         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13301         different ucontext_t implementations.
13302         * exceptions-arm.c: Use the above defines to get exceptions working on 
13303         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13304         * mini-arm.c: Implement iPhone icache support (based on a patch by
13305         Luke Howard lukeh@padl.com)
13306
13307 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13308
13309         * mini.c: Enable generic sharing of calls to non-static
13310         non-interface non-generic non-value-type methods.
13311
13312         * mini-trampolines.c: Resolve calls from shared generic code.
13313
13314 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13317
13318         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13319
13320 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13321
13322         * mini.c: some fixes for the AOT compiler.
13323
13324 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * cpu-amd64.md: Add clob:1 to some float opcodes.
13327
13328 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13329
13330         * mini.h: Added MiniVerifierMode enumeration.
13331
13332         * mini.c: Added mini_verifier_set_mode to control
13333         the usage of the new verifier.
13334
13335         * mini.c (mono_method): Integrated the new verifier.
13336
13337         * driver.c: Extended --security option with validil and
13338         verifiable options to activate the new verifier.
13339
13340 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13341
13342         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13343         optimization to ctors taking 0 or 2 arguments too.
13344
13345         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13346         a bit.
13347
13348         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13349
13350         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13351
13352 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13353
13354         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13355         non-aot case as well.
13356
13357         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13358
13359         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13360         changes.
13361
13362         * aot-compiler.c (encode_patch): Ditto.
13363
13364         * mini.h (G_MININT32): Fix the definition of this.
13365
13366 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13369
13370         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13371
13372 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13375         methods returning vtypes in registers.
13376         (mono_arch_allocate_vars): Ditto.
13377
13378         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13379
13380         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13381
13382         * generics.cs: Add a test from the linear IR branch.
13383
13384         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13385
13386         * mini.c (inline_method): Cache failed inline attempts.
13387
13388 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13389
13390         * mini.c: For shared methods of generic classes put the location
13391         of "this" into the MonoGenericJitInfo.
13392
13393         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13394         register out of a MonoContext by register number.  Add the generic
13395         sharing context as an argument to mono_arch_find_this_argument().
13396
13397         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13398         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13399         for new arch function.
13400
13401         * mini-exception.c: Handle open exception clauses in shared
13402         generic code.
13403
13404         * mini-trampolines.c: Supply additional argument to
13405         mono_arch_find_this_argument().
13406
13407 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13408
13409         * Makefile.am (regtests): Run the bench.exe tests last.
13410
13411 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13414         a bit.
13415
13416 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13419         with MS.
13420
13421         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13422         
13423         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13424
13425         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13426         whose class has no cctor.
13427
13428         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13429
13430 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13433         unverified.
13434
13435 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13436
13437         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13438         to be in sync with the code on the linear IR branch.
13439
13440         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13441
13442         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13443
13444 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13445
13446         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13447
13448         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13449
13450         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13451
13452         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13453
13454         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13455         
13456         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13457         body.
13458
13459 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13460
13461         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13462         OP_LOADR4_MEMBASE emission.
13463
13464         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13465         (mono_spillvar_offset_float): Ditto.
13466
13467         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13468
13469         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13470         emission.
13471
13472         * basic-long.cs: Add regression tests for them.
13473
13474         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13475         use.
13476         (mono_arch_allocate_vars): Fix representation of single-precision float
13477         argument.
13478         (mono_arch_output_basic_block): Ditto.
13479
13480         * inssel-mips.brg: Ditto, remove duplicate items.
13481
13482         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13483         arguments of tail calls as on other platforms.
13484         (mono_arch_output_basic_block): Handle tail calls.
13485
13486         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13487         register.
13488
13489         * objects.cs (test_5_pass_static_struct): Add test for it.
13490
13491         Contributed under MIT/X11 license.
13492
13493 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13494
13495         * Makefile.am: Use gmcs for compiling the regression tests.
13496
13497         * *.2.cs *.2.il: Rename to *.cs and *.il.
13498
13499 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13500
13501         * regalloc.h: Make the vassign array smaller.
13502
13503         * mini.c (mini_method_compile): Remove an unused field in cfg.
13504
13505         * mini-codegen.c: Add a bunch of micro optimizations.
13506
13507 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13508
13509         * regalloc.h: Remove some unused fields.
13510
13511 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13512
13513         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13514
13515         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13516
13517 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13518
13519         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13520
13521         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13522         trampoline: Fetch an entry from the runtime generic context.  If
13523         it's NULL, jump to the actual trampoline to fill the runtime
13524         generic context.  Otherwise, return it.
13525
13526         * mini.c: Call the lazy fetch trampoline to get entries out of the
13527         runtime generic context.
13528
13529         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13530         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13531         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13532
13533 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13534
13535         * mini.c: Fetch data out of the extensible part of the runtime
13536         generic context instead of calling a helper function.
13537
13538         * generic-sharing.c: Some functions moved into
13539         metadata/generic-sharing.c.  Helper function for fetching other
13540         types now checks and asserts against extensible rgctx (just for
13541         debugging purposes - the helper function isn't called anymore
13542         unless for debugging).
13543
13544 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13547         for tail calls up to the point that the tests in iltests.exe run. Also add a
13548         dummy CKFINITE implementation.
13549         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13550         needed for trampoline LMF frames.
13551
13552         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13553         trampoline LMF frames.
13554
13555 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13556
13557         * mini.c (inline_method): clean any pending loader error when inlining fail.
13558         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13559
13560 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13561
13562         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13563
13564         * aot-runtime.c (decode_patch_info): Ditto.
13565
13566         * mini.c (mono_resolve_patch_target): Ditto.
13567         
13568         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13569         icall wrappers.
13570
13571         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13572         
13573         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13574         if it references an icall address.
13575
13576 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13577
13578         * cpu-s390x.md: Remove some more unused opcodes.
13579         
13580         * cpu-s390x.md: Remove some unused opcodes.
13581
13582         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13583         mono_op_imm_to_op ().
13584
13585         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13586         instead of a switch statement.
13587         
13588         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13589         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13590
13591         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13592         
13593         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13594
13595         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13596         -1.
13597
13598 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13599
13600         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13601         opened. Fixes #362607.
13602
13603         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13604
13605         * iltests.il.in: Add a test for static methods in interfaces.
13606
13607 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13608
13609         * genmdesc.c (build_table): Fix a crash on older glib versions.
13610
13611         * cpu-sparc.md: Remove some unused opcodes.
13612         
13613         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13614         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13615
13616         * cpu-amd64.md: Remove some unused opcodes.
13617
13618         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13619         like the other opcodes.
13620
13621 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13624
13625         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13626
13627         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13628         variables 'cfg' instead of 'm' for consistency.
13629
13630         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13631
13632         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13633         argument holding the vtype return address, to avoid the ambigious use of
13634         cfg->ret for this purpose.
13635
13636         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13637
13638         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13639         
13640         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13641         new mono_print_ins () function which only takes one argument.
13642
13643 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13646         macro arguments.
13647
13648 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13649
13650         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13651
13652         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13653
13654         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13655         opcodes and other small changes.
13656
13657         * mini-ops.h: Add some new opcodes from the linear IR branch.
13658
13659         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13660
13661         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13662         opcodes, use the REG_MEMBASE opcodes instead.
13663         
13664         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13665         opcodes, use the REG_MEMBASE opcodes instead.
13666         
13667         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13668         linear IR branch.
13669
13670         * mini.c (mono_op_imm_to_op): New helper function.
13671
13672         * mini-ops.h: Add some opcodes from linear IR branch.
13673
13674 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13677         <tsv@solvo.ru>.
13678
13679 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13682         OP_ICONV_TO_R4/R8.
13683
13684         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13685
13686 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * aot-compiler.c (emit_method_code): Add an assert.
13689
13690         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13691         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13692         methods.
13693
13694 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13695
13696         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13697         some load/store opcodes so they are consistent. 
13698         (mono_arch_emit_prolog): Simplify some code.
13699
13700         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13701
13702         * objects.cs: Add tests for large argument offsets on ARM.
13703
13704         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13705         stack offsets. Fixes #359651.
13706
13707         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13708
13709         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13710
13711         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13712
13713         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13714
13715         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13716
13717         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13718         rid of CEE_CONV_R_UN.
13719
13720         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13721
13722 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13723
13724         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13725
13726         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13727
13728         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13729
13730         * cpu-amd64.md: Remove some unused opcodes.
13731
13732         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13733
13734         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13735
13736         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13737         arch specific functions for its parts. Call the peephole pass after local
13738         regalloc so the prolog can compute a more accurate max_offset.
13739         
13740         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13741         the corresponding OP_I/OP_L opcodes.
13742
13743         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13744
13745         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13746
13747 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13750         as they are handled in mini.c.
13751
13752         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13753         
13754         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13755         case since it is handled in mini.c.
13756
13757         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13758
13759         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13760
13761         * *.c: Use the new opcodes in the IR and back end code.
13762
13763         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13764
13765         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13766
13767 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13768
13769         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13770         an assert because it has a race condition.
13771
13772 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13775
13776         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13777
13778         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13779
13780         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13781         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13782
13783 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13784
13785         * cpu-amd64.md (move): Correct the maximum size of move.
13786
13787 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13788
13789         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13790         the generic class init trampoline to return quickly if the class
13791         is already inited.
13792
13793 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13796         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13797
13798 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13801         branch.
13802
13803 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * objects.cs: Add some soft-float tests.
13806
13807         * mini.c: Fix a couple more soft-float issues.
13808
13809         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13810
13811         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13812         avoid a REX prefix.
13813
13814 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13817         exception happens while compiling a virtual method.
13818
13819 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13820
13821         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13822         
13823         * mini-sparc.c: Fix build.
13824
13825         * mini-sparc.c (get_call_info): Add support for generic sharing.
13826
13827         * mini-exceptions.c: Add a FIXME.
13828
13829 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13830
13831         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13832         altstack handling code.
13833
13834         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13835         
13836         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13837
13838         * mini-s390.c: Add support for generic sharing.
13839
13840         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13841         Fix CAS on s390.
13842         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13843
13844         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13845
13846         * mini-s390x.c: Add support for generic sharing.
13847         
13848         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13849         Fix CAS on ia64.
13850         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13851
13852         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13853         can be used since it takes a 16 bit signed immediate.
13854
13855         * inssel-s390x.brg: Fix OP_SETRET.
13856
13857         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13858
13859         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13860
13861         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13862
13863         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13864
13865         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13866         in one place.
13867
13868         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13869         stuff.
13870
13871         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13872         of the unused mono_arch_patch_delegate_trampoline stuff.
13873
13874 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * basic-long.cs: Move the fp related tests to basic-float.cs.
13877
13878         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13879
13880         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13881
13882         * basic-calls.cs: Add a test for proper float argument passing.
13883
13884         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13885         if the context corresponds to an exception received through a signal.
13886
13887         * exceptions.cs: Add a test for nullref handling at the start of a try
13888         clause.
13889
13890         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13891
13892         * jit-icalls.c (mono_break): New JIT icall.
13893
13894         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13895
13896         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13897
13898 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * cpu-*.md: Get rid of unused opcodes.
13901
13902         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13903
13904         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13905         by all platforms.
13906
13907         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13908         define.
13909
13910         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13911         the arch independent trampoline code in mini-trampolines.c.
13912
13913         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13914
13915         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13916
13917         * mini-s390.h: Remove an unused define.
13918         
13919         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13920         the arch independent trampoline code in mini-trampolines.c.
13921
13922         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13923
13924 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13925
13926         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13927
13928         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13929
13930         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13931
13932         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13933
13934         * cpu-amd64.md: Use smaller sizes for int opcodes.
13935
13936         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13937
13938         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13939         objects.cs.
13940
13941         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13942         debugging.
13943
13944         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13945         instead of though a pointer to save an indirection when accessing elements of
13946         the array.
13947
13948         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13949         some typos.
13950         (NOT_IMPLEMENTED): New helper macro.
13951         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13952         of a bb.
13953
13954         * *.c: Use the new helper macro.
13955
13956 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13959
13960 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13963         stack slots.
13964
13965 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13968         profiling is enabled.
13969         
13970         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13971         the end.
13972         (mono_arch_emit_prolog): Add more first bblock optimizations.
13973
13974         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13975         in order if possible.
13976         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13977         bblock, since the arguments are still in their original registers.
13978
13979         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13980
13981 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13984         as well.
13985
13986         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13987         offset 0.
13988
13989         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13990
13991         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13992         process async exceptions received while in unmanaged code.
13993
13994         * mini.c (mini_init): Install a callback with the runtime which will be called
13995         when a thread receives an async exception while in unmanaged code.
13996
13997         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13998
13999         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
14000
14001 2008-01-16  Wade Berrier  <wberrier@novell.com>
14002
14003         * cpu-g4.md:
14004         * cpu-arm.md:
14005         * cpu-s390x.md:
14006         fix build
14007
14008 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
14011         compilation with sun cc.
14012
14013         * cpu-*.md: Fix the build.
14014
14015         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
14016
14017         * mini-amd64.h: Add some comments to the MonoLMF structure.
14018
14019         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
14020         
14021         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
14022         in the LMF structure if possible. This saves two instructions in the
14023         managed->native wrappers.
14024
14025         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
14026
14027 2008-01-16  Mark Probst  <mark.probst@gmail.com>
14028
14029         * generic-sharing.c: New type argument lookup code which uses the
14030         runtime generic context template.
14031
14032 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
14033
14034         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
14035
14036         * mini-arm.c (add_general): Fix arm eabi parameter passing.
14037         (mono_arch_output_basic_block): Fix localloc implementation.
14038
14039         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
14040
14041         * mini-ia64.c (peephole_pass): Fix ia64 build.
14042
14043         * mini-amd64.c (peephole_pass): Fix a warning.
14044         
14045         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
14046         at a constant offset from sp/fp.
14047
14048         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
14049         instead of obtaining it from *lmf in the managed method case.
14050
14051 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
14054
14055 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
14056
14057         * mini.h (MonoInstList): New type.
14058         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
14059         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
14060         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
14061         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
14062         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
14063         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
14064         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
14065         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
14066         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
14067         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
14068         MONO_INST_LIST_FOR_EACH_ENTRY,
14069         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
14070         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
14071         mono_inst_list_first, mono_inst_list_last,
14072         mono_inst_list_next, mono_inst_list_prev): New instruction
14073         list handling interfaces.
14074         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
14075         list head 'ins_list'.
14076         (MonoInst): Replace next pointer with list head 'node'.
14077         (MonoCallInst): Make 'out_args' a MonoInstList.
14078         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
14079         (MonoCompile): Delete reverse_inst_list and
14080         reverse_inst_list_len.
14081         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
14082         mono_arch_lowering_pass, mono_arch_local_regalloc,
14083         mono_arch_output_basic_block, mono_arch_emit_prolog):
14084         Convert to new instruction lists.
14085         (insert_after_ins): Delete.
14086         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
14087         instruction lists.
14088         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
14089         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
14090         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
14091         mono_emulate_opcode, mono_emit_load_got_addr,
14092         inline_method, mono_method_to_ir, mono_print_bb_code,
14093         print_dfn, decompose_pass, nullify_basic_block,
14094         replace_out_block_in_code, remove_block_if_useless,
14095         merge_basic_blocks, move_basic_block_to_end,
14096         try_unsigned_compare, optimize_branches, mono_print_code,
14097         mini_select_instructions, remove_critical_edges): Likewise.
14098         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
14099         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
14100         mono_arch_output_basic_block, mono_arch_emit_prolog):
14101         Likewise.
14102         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
14103         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14104         mono_arch_output_basic_block): Likewise.
14105         (inst_list_prepend, insert_after_ins): Delete.
14106         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
14107         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
14108         instruction lists.
14109         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
14110         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
14111         mono_arch_emit_prolog): Likewise.
14112         * cfold.c (mono_constant_fold): Likewise.
14113         * liveness.c (visit_bb, mono_analyze_liveness,
14114         optimize_initlocals): Likewise.
14115         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
14116         * graph.c (mono_draw_code_cfg): Likewise.
14117         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
14118         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
14119         mono_ssa_cprop): Likewise.
14120         * abcremoval (get_relations_from_previous_bb, process_block):
14121         Likewise.
14122         * local-propagation (mono_cprop_invalidate_values,
14123         mono_local_cprop_bb): Likewise.
14124         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
14125         peephole_pass, mono_arch_output_basic_block,
14126         mono_arch_emit_prolog): Likewise.
14127         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
14128         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14129         mono_arch_emit_prolog): Likewise.
14130         (insert_after_ins): Delete.
14131         * aliasing.c (print_code_with_aliasing_information,
14132         mono_build_aliasing_information, mono_aliasing_deadce):
14133         Convert to new instruction lists.
14134         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
14135         peephole_pass, NEW_INS, mono_arch_lowering_pass,
14136         mono_arch_local_regalloc, mono_arch_output_basic_block):
14137         Likewise.
14138         (insert_after_ins): Delete.
14139         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
14140         peephole_pass, mono_arch_output_basic_block): Convert to
14141         new instruction lists.
14142         * mini-codegen (InstList, inst_list_prepend,
14143         insert_after_ins): Delete.
14144         (insert_before_ins, get_register_force_spilling,
14145         get_register_spilling, free_up_ireg, free_up_reg,
14146         create_copy_ins, create_spilled_store, alloc_int_reg,
14147         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
14148         to new instruction lists.
14149         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
14150         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
14151         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
14152         (insert_after_ins): Delete.
14153         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
14154         mono_arch_local_regalloc, mono_arch_output_basic_block,
14155         mono_arch_call_opcode): Convert to new instruction lists.
14156         (insert_after_ins): Delete.
14157         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
14158         peephole_pass, mono_arch_output_basic_block,
14159         mono_arch_emit_prolog): Convert to new instruction lists.
14160
14161 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
14164
14165         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
14166         Fixes #353182.
14167
14168         * Makefile.am (version.h): Make this work with non-bash shells.
14169
14170 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
14171
14172         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
14173
14174 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
14177         the InitializeArray optimization.
14178
14179 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * mini.c driver.c: Don't include os/gc_wrapper.h.
14182
14183 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * mini.c (print_jit_stats): Print GC statistics if available.
14186
14187 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14188
14189         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14190
14191 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14192
14193         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14194
14195 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14198         
14199         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14200
14201         * driver.c (mono_main): Ditto.
14202
14203 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14204
14205         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14206
14207         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14208         in the vtable can't be encoded.
14209         (compile_method): Ditto.
14210
14211 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14212
14213         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14214         defined.
14215
14216         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14217         lmf->rbp.
14218
14219         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14220         the top LMF entry belongs to the current method.
14221
14222         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14223
14224 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14227         
14228         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14229
14230         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14231
14232         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14233
14234         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14235
14236         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14237         implementation.
14238
14239         * basic-float.cs: Add an ulong->double cast test.
14240
14241 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14242
14243         * mini.c (mono_method_to_ir): Fix a warning.
14244
14245 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * mini-ops.h: Add OP_SWITCH.
14248
14249         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14250         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14251
14252 2007-12-11  Geoff Norton  <gnorton@novell.com>
14253
14254         * mini-s390x.c: Minor change to the MAX() define to allow
14255         it to compile with other gcc versions.
14256
14257 2007-12-11  Geoff Norton  <gnorton@novell.com>
14258
14259         * cpu-s390x.md:
14260         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14261
14262 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14263
14264         exceptions-arm.c (mono_arch_get_restore_context): Restore
14265         the frame pointer.
14266
14267         exceptions-arm.c (throw_exception): Save the frame pointer.
14268         This is a partial fix for #323747. Only the client side is
14269         fixed.
14270
14271 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14272
14273         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14274         was using an unrelated variable to log the class which
14275         needed the cctor to be called. This was crashing on arm.
14276
14277 2007-12-09  Robert Jordan  <robertj@gmx.net>
14278
14279         * mini-x86.c (mono_arch_emit_epilog):
14280         Consider all kinds of 64-bit types. Fixes #323114.
14281
14282 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14283
14284         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14285
14286 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14289
14290 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14291
14292         * mini.c: run type ctor before allocating an object, not only
14293         when running it's constructor method (fixes at least part of bug #342507).
14294
14295 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14296         
14297         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14298         
14299         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14300         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14301         function.
14302
14303         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14304         mono_generic_class_init_trampoline () the same as it is done with the other
14305         trampolines.
14306
14307         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14308         aot-runtime.c aot-compiler.c: Implement AOT support.    
14309
14310 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14311
14312         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14313         build for archs which don't have the vtable trampoline defined
14314         yet.
14315
14316 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14319
14320         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14321
14322         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14323
14324         * tramp-<ARCH>.c: Use the new helper function.
14325
14326 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14327
14328         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14329         trampoline call, which takes a vtable argument.
14330
14331         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14332         OP_TRAMPCALL_VTABLEs like other calls.
14333
14334         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14335         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14336         call.  Implemented a support function which fetches the vtable
14337         from a register set.
14338
14339         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14340         Implemented a generic class init trampoline, using the
14341         OP_TRAMPCALL_VTABLE opcode.
14342
14343         * mini.c: Implemented static field access when sharing generic
14344         code.  This implies initing the class using the new
14345         OP_TRAMPCALL_VTABLE call.
14346
14347 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14348
14349         * mini.c: Don't compile methods with sharing enabled if their
14350         classes are disabled for sharing.
14351
14352 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14353
14354         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14355         opcodes. Fixes #346563.
14356
14357         * objects.cs: Add a new test.
14358
14359         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14360
14361         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14362         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14363
14364 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14365
14366         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14367
14368 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14369
14370         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14371         code stream.
14372
14373 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14374
14375         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14376
14377         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14378         optimization in the AOT case.
14379         
14380 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14381
14382         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14383         
14384         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14385
14386         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14387
14388         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14389
14390         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14391         is created by the inlined delegate ctor.
14392
14393         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14394
14395         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14396
14397 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * cpu-x86.md: Fix the length of ckfinite.
14400
14401 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14404         
14405         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14406         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14407
14408         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14409
14410         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14411         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14412
14413 2007-11-28  Martin Baulig  <martin@ximian.com>
14414
14415         * mini-x86.c
14416         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14417         after creating the trampoline.
14418
14419 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14422
14423         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14424         the same version.
14425
14426         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14427         instead of the calling method to help AOT.
14428
14429         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14430
14431 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14432
14433         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14434         is defined.
14435
14436 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14437
14438         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14439         
14440         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14441         (encode_method_ref): No need to handle generic method definitions specially.
14442
14443         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14444
14445         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14446         decode_klass_info.
14447
14448         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14449         encode_klass_info.
14450         (compile_method): Enable generic sharing.
14451
14452 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14455         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14456
14457         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14458         generic code.
14459
14460         * mini-trampolines.c: Fix a warning.
14461
14462         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14463         NEW_PCONST.
14464         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14465         (generic_class_is_reference_type): Remove unused function.
14466
14467         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14468         in the generic vtable trampoline case.
14469
14470         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14471         
14472         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14473         return an AOT method based on a vtable slot.
14474
14475         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14476
14477         * mini.c (mini_get_vtable_trampoline): Export this.
14478
14479 2007-11-22  Martin Baulig  <martin@ximian.com>
14480
14481         * debug-debugger.h
14482         (MonoDebuggerInfo): Move `debugger_version' up.
14483
14484 2007-11-22  Martin Baulig  <martin@ximian.com>
14485
14486         * mini-amd64.c
14487         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14488
14489         * mini-trampolines.c
14490         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14491         after compiling the method.
14492
14493 2007-11-20  Martin Baulig  <martin@ximian.com>
14494
14495         * debug-mini.c
14496         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14497         (mono_debugger_remove_breakpoint): Likewise.
14498         (mono_debugger_check_breakpoints): Likewise.
14499
14500         * debug-debugger.c: Implement the new breakpoint interface here.
14501
14502 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14505         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14506
14507         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14508
14509 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14512
14513         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14514         mini.c.
14515
14516         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14517         mini.c.
14518
14519         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14520         returning a vtype in a register.
14521
14522         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14523         here from the arch specific code.
14524
14525         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14526         mini.c.
14527
14528         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14529         (mono_arch_emit_prolog): Increment maximum prolog size.
14530
14531         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14532         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14533
14534         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14535         MonoGenericSharingContext.
14536
14537         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14538         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14539
14540 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14541
14542         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14543         which extract fields out of the runtime generic context.  Full
14544         sharing of the NEWARR opcode.
14545
14546 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14547
14548         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14549         --enable-minimal=ssa.
14550
14551 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14554         mono_marshal_get_delegate_invoke () signature change.
14555
14556 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14557
14558         * mini.c: Removed the shared context in favor of the generic
14559         sharing context.  Allocate the MonoJitInfo structure with room for
14560         the generic sharing context if it's needed.
14561
14562         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14563         domain-internals.h now.
14564
14565         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14566
14567         * generic-sharing.c: Several changes for working without a shared
14568         context and instead operating on open types instead.
14569
14570 2007-11-12  David S. Miller  <davem@davemloft.net>
14571
14572        * inssel-sparc.brg: Fix double instruction emit.
14573
14574 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14577         Get/Set/Address methods.
14578         
14579         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14580         mono_marshal_get_delegate_invoke signature change.
14581
14582 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14583
14584         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14585         This can happens with dynamic methods. Fixes the other bug in #322722.
14586
14587 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14588
14589         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14590         BX call sequence.
14591
14592         * mini-arm.c (arm_patch): Implement patching of BX call
14593         sequence. Fixes one of the bugs in #322722.
14594
14595 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14596
14597        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14598        under Linux.  We only need to flush every 32-byte cache line.    
14599
14600 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14601
14602         * mini.c:
14603         move_basic_block_to_end: Add branches when needed, eventually creating
14604         a new BB.
14605         optimize_branches: added a parameter that tells if it's ok to create
14606         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14607         and avoid calling move_basic_block_to_end when it's not ok.
14608         Fixes bug 318677.
14609
14610 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14611
14612         * mini.c: Abort inlining call to InitializeArray if something
14613         looks wrong.  Let the icall handle it, which now has proper safety
14614         checks.
14615
14616 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14617
14618         * mini.c (mono_spill_call): add support for soft-float.
14619
14620         * mini.c (mono_method_to_ir): add support for soft-float
14621         to inlined functions that return float.
14622
14623         * mini.c (mono_method_to_ir): add support for soft-float
14624         to cee_stsfld opcode on float fields.
14625
14626 2007-11-05  Geoff Norton  <gnorton@novell.com>
14627
14628         * mini-x86.h: Fix the structure access for X86 Leopard.
14629
14630
14631 2007-11-05  Martin Baulig  <martin@ximian.com>
14632
14633         * mini-trampolines.c
14634         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14635         after compiling the method to notify the debugger.
14636
14637 2007-11-05  Martin Baulig  <martin@ximian.com>
14638
14639         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14640
14641 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14642
14643         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14644         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14645
14646 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14647
14648         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14649         native-to-managed wrappers.
14650         
14651 2007-11-01  Geoff Norton  <gnorton@novell.com>
14652
14653         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14654         members.
14655
14656 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14657
14658         * mini.c, mini-x86.c: when getting back from unmanaged code
14659         to managed via a marshaled delegate we also need to set the
14660         right domain.
14661
14662 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14663
14664         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14665         for amd64.
14666
14667 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14670         let the debugger or other external agents to tell the JIT when
14671         a sw breakpoint has been inserted in the code that the JIT needs
14672         to be able to inspect.
14673
14674 2007-10-31  Martin Baulig  <martin@ximian.com>
14675
14676         * debug-debugger.h
14677         (MonoDebuggerInfo): Remove `runtime_class_init'.
14678
14679 2007-10-30  Martin Baulig  <martin@ximian.com>
14680
14681         * debug-mini.h
14682         (mono_debugger_thread_created): Added `MonoThread *' argument.
14683         (mono_debugger_extended_notification): New public method.
14684         (mono_debugger_trampoline_compiled): New public method.
14685
14686         * debug-mini.c
14687         (MonoDebuggerThreadInfo): Added `thread' and
14688         `extended_notifications' fields.
14689
14690         * debug-debugger.c
14691         (debugger_executable_code_buffer): New static variable.
14692
14693         * debug-debugger.h
14694         (MonoDebuggerInfo): Added `executable_code_buffer',
14695         `executable_code_buffer_size', `breakpoint_info_area',
14696         `breakpoint_table' and `breakpoint_table_size'.
14697
14698 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14699
14700         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14701         that IP  either is an unused value or the vtable pointer. IMT 
14702         calls use vtable + offset now. Reduced by almost half the size
14703         of IMT entries.
14704
14705 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14706
14707         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14708         defines to access param registers. Replace long usage with
14709         gsize as sizeof(long) != sizeof(void*) on Win64.
14710
14711         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14712         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14713         instead of non-existant _GetAddressOfReturnAddress.
14714
14715         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14716         param registers. Save/restore %rdi and %rsi in MonoLMF.
14717
14718         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14719         param registers. Modify (throw_exception) signature to take 
14720         %rdi and %rsi on Win64. 
14721
14722         Code is contributed under MIT/X11 license.
14723
14724 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14725
14726         * helpers.c: unlink debugging output files.
14727
14728 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14729
14730         * mini.c: Move mono_create_ftnptr () to object.c.
14731
14732 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14733
14734         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14735         optional. This function can now be used to disassemble code generated
14736         outside the JIT such as trampolines and IMT thunks.
14737
14738         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14739
14740         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14741         vtable pointer from a ldr instruction.
14742
14743         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14744         new IMT call sequence.
14745
14746         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14747         call sequence for interface invocations.
14748
14749         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14750         for imt support. This function is empty since IMT on ARM requires no
14751         special handling on the IR side.
14752
14753         * mini-arm.c (mono_arch_find_imt_method): added, required for
14754         imt support.
14755
14756         * mini-arm.c (mono_arch_find_this_argument): added, required
14757         for imt support.
14758
14759         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14760         a ldr instruction to load a value stored in the code stream.
14761
14762         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14763         for imt support.
14764
14765
14766 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14767
14768         * mini.c (mini_init): Install the jump trampoline callback.
14769
14770 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14771
14772         * mini-trampolines.c: handle synchronized methods with the common
14773         vtable trampoline (bug #335601).
14774
14775 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14776
14777         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14778
14779         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14780         64 bit platforms.
14781
14782         * mini-ia64.h mini-ia64.c: Add support for IMT.
14783
14784         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14785         prolog. Fixes #331958.
14786
14787 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14788
14789         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14790
14791 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14794         trampoline.
14795
14796 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14797
14798         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14799         trampoline.
14800
14801 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14802
14803         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14804         trampoline.
14805
14806 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14807
14808         * mini-trampolines.c: changed the magic rampoline to understand
14809         the common vtable trampoline method: the method to invoke is
14810         determined by the vtable displacement of the call.
14811
14812 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * mini.c, mini.h: register the common vtable trampoline if the
14815         architecture supports it.
14816
14817 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14818
14819         * cpu-amd64.md: use the correct max length for tls_get.
14820
14821 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14822
14823         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14824         CEE_STELEM_ANY. Fixes #333696.
14825
14826 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14827
14828         * exceptions-x86.c: provide more graceful handling of the case where
14829         we followed a bogus function pointer from managed code (bug #332866).
14830
14831 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14832
14833         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14834         replaces the generic_shared flag and will carry more information
14835         in the future.
14836
14837         * generic-sharing.c: Added mini_type_stack_size() which allows
14838         allows open types if given a generic sharing context.
14839         mini_get_basic_type_from_generic() takes a
14840         MonoGenericSharingContext* instead of a MonoCompile* now.
14841
14842         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14843         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14844         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14845         changes above.  Just passing arguments through to the right
14846         places.
14847
14848 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14849
14850         * mini-arm.c: unify the call emission to emit_code_seq().
14851
14852 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14853
14854         * tramp-arm.c: reduced the trampoline size.
14855
14856 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14857
14858         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14859         variable handling out of arch-specific code.
14860
14861 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini-arm.c: implemented fast delegate dispatch.
14864
14865 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14866
14867         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14868         that fp elimination is turned off if the space required by locals is too
14869         big. Fixes #331958.
14870
14871 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14872
14873         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14874         ARM to the new style trampoline.
14875
14876 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14877
14878         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14879
14880         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14881
14882 2007-10-09  Martin Baulig  <martin@ximian.com>
14883
14884         * debug-debugger.h
14885         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14886         `field_info_offset_offset'.     
14887
14888 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14889
14890         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14891         removed more internal usage of the r11 register and made it available
14892         to the register allocator.
14893
14894 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14895
14896         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14897         when sharing generics and treat type variables as references.
14898
14899 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14900
14901         * mini-ppc.c: started removing the internal uses of register r11
14902         to eventually allow the register allocator to manage it as an
14903         additional available register.
14904
14905 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14906
14907         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14908
14909 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14910
14911         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14912         specific trampolines as they are not performance critical as a jump
14913         target (maybe align as before only for AOT code?). This saves about
14914         200 KB of native code on x86 for monodevelop startup.
14915
14916 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14917
14918         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14919         monodevelop startup.
14920
14921 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14922
14923         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14924
14925         * mini-sparc.h mini-sparc.c: Implement IMT support.
14926
14927         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14928         its smaller and doesn't clobber sparc_g1.
14929
14930         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14931
14932 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14933
14934         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14935
14936 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14937
14938         * mini-ppc.c: implemented fast delegate invocation.
14939
14940 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14941
14942         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14943
14944 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14945
14946         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14947         code to the new style trampoline in preparation for IMT support.
14948
14949 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14950
14951         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14952         systems already. This also reduces the specific trampiline sizes and
14953         prepares for the use of r12 as the IMT identifier register.
14954
14955 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14956
14957         * mini-mips.h: endianess fix (simplified from a patch by
14958         Thomas Kunze <thommy@tabao.de>, bug #323737).
14959
14960 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14961
14962         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14963         to access ucontext fields and enable netbsd support
14964         (partially from Magnus Henoch <mange@freemail.hu>).
14965
14966 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14967
14968         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14969         use the preprocessor from the CPP env var if it is set.
14970
14971 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14972
14973         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14974         code, before interface_offset gets used.
14975
14976 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14977
14978         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14979         mono_class_setup_vtable () before accessing klass->vtable.
14980
14981 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14982
14983         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14984         hackish.
14985
14986 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14987
14988         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14989         IMT slots (this saves hundreds of KB of memory in programs like
14990         IronPython and Monodevelop).
14991
14992 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14993
14994         * mini.c: print the delegate counter.
14995
14996 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14997
14998         * mini-x86.c: make it easier to enable the debugging code for IMT
14999         slots.
15000
15001 2007-09-28  Martin Baulig  <martin@ximian.com>
15002
15003         * debug-debugger.h
15004         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15005         `mono_method_klass_offset' and `mono_method_token_offset'.
15006
15007 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15008
15009         * mini.c: First generics sharing implementation.  Can only share
15010         in very simple cases.  If sharing doesn't work it falls back to
15011         dedicated compilation.
15012
15013         * mini.h: Flag in MonoCompile to specify whether generic
15014         compilation is shared.  Flags enum for marking which generic inst
15015         of a context is used.  Prototypes for helper functions.
15016
15017         * generic-sharing.c: Helper functions for generic method sharing.
15018
15019         * optflags-def.h: Optimization flag (gshared) for enabling generic
15020         method sharing added.
15021
15022         * Makefile.am: generic-sharing.c added.
15023
15024 2007-09-19 Daniel Nauck <dna@mono-project.de>
15025
15026         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
15027
15028 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
15029         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
15030         fixes bug 325507.
15031
15032 2007-09-19  Martin Baulig  <martin@ximian.com>
15033
15034         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
15035         mono_debug_cleanup() is now part of mono_cleanup().
15036
15037 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15038
15039         * driver.c (mono_main): Fix a warning.
15040
15041 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15042
15043         * aot-compiler.c: Optimize various parts when processing large assemblies.
15044         Fixes ##325568.
15045
15046         * mini.c (mono_patch_info_hash): Improve hash function.
15047
15048 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15049
15050         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
15051         
15052         Code is contributed under MIT/X11 license.
15053
15054 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15055
15056         * mini.c (mini_init): Fix a leak.
15057
15058         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
15059
15060 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15061
15062         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
15063
15064 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15065
15066         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
15067
15068 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15069
15070         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
15071         variance tests.
15072
15073         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
15074
15075         * mini.c (handle_alloc): Enable managed allocators in AOT code.
15076
15077         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
15078
15079         * aot-runtime.c (decode_patch_info): Ditto.
15080
15081 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15082
15083         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
15084         static case. Cache delegates in architecture specific code, 
15085         based on number of parameters.
15086         
15087         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
15088         in architecture specific code, based on number of parameters.
15089         
15090         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
15091         caching happen in architecture specific code now.
15092         
15093         Code is contributed under MIT/X11 license.
15094
15095 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15096
15097         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
15098         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
15099         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
15100
15101         Code is contributed under MIT/X11 license.
15102
15103 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15104         * mini.c: (mono_thread_abort) Fixed bug #82416.
15105
15106 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15107
15108         * mini.: hook the new managed GC allocation feature into the JIT.
15109
15110 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15111
15112         * mini.c: implementation for the new runtime tls opcode.
15113
15114 2007-09-11  Martin Baulig  <martin@ximian.com>
15115
15116         * debug-debugger.h
15117         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
15118         `mono_method_inflated_offset'.
15119
15120 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * driver.c mini.h mini.c: Add a new devel command line option for injecting
15123         async exceptions into a method.
15124
15125         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
15126         purpose of testing whenever the unwinder works at every instruction.
15127
15128 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15129
15130         * mini.c: check accessibility of method used in ldftn (fixes
15131         bug #82635).
15132
15133 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
15134
15135         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
15136
15137         * inssel.brg: Fix a warning.
15138
15139 2007-09-03  Martin Baulig  <martin@ximian.com>
15140
15141         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
15142         now takes the `main_method' as argument.
15143
15144 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
15145
15146         * cpu-sparc.md (endfilter): Add missing src1:i argument.
15147
15148 2007-08-30  Jonathan Chambers <joncham@gmail.com>
15149
15150         * driver.c: include the cil-coff.h header on Windows.
15151         
15152         Code is contributed under MIT/X11 license.
15153
15154 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15155
15156         * mini.c, driver.c: don't include the cil-coff.h header.
15157
15158 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15159
15160         * mini.c: flag places that needs fixes fo soft-float support.
15161
15162 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
15163
15164         * mini.h, inssel-float.brg: fix soft-float constant loads on big
15165         endian systems (partially from Dean Jenkins, bug #81924).
15166
15167 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15168
15169         * mini.c (check_linkdemand): Remove embedded reference object in
15170         call to LinkDemandSecurityException.
15171         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
15172         with an IntPtr instead of a reference object.
15173
15174 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15175
15176         * mini.c (handle_initobj): Handle alignment properly.
15177
15178         * inssel.brg (mini_emit_memset): Ditto. 
15179
15180         * inssel.brg (mini_emit_memcpy): Ditto. 
15181
15182         * inssel-sparc.brg: Ditto.              
15183
15184         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
15185
15186 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
15187
15188         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15189         exceptions raised in unmanaged code. Fixes part of #82594.
15190
15191 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15192
15193         * mini.c (mono_method_to_ir), declsec.c
15194         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15195
15196 2007-08-22  Martin Baulig  <martin@ximian.com>
15197
15198         * debug-mini.h
15199         (MonoDebuggerThreadInfo): New typedef.
15200         (mono_debugger_thread_table): New global variable.
15201         (mono_debugger_thread_created): New public function.
15202         (mono_debugger_thread_cleanup): New public function.
15203
15204         * debug-debugger.h
15205         (MonoDebuggerInfo):
15206         - removed `get_current_thread' and `lookup_assembly'.
15207         - removed `data_table'.
15208         - added `thread_table'.
15209
15210         * mini.c
15211         (mono_thread_start_cb): Call mono_debugger_thread_created().
15212         (mono_thread_attach_cb): Likewise.
15213         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15214         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15215         initial domain.
15216
15217         * driver.c (mono_main): Move mono_debug_init() up, before calling
15218         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15219
15220 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15221
15222         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15223         together when passing several arguments of type double (gives a small
15224         speedup and saves a few bytes of generated code).
15225
15226 2007-08-20  Jb Evain  <jbevain@novell.com>
15227
15228         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15229
15230 2007-08-20  Jb Evain  <jbevain@novell.com>
15231
15232         * mini.c (mono_method_to_ir): throw MethodAccessException
15233         and FieldAccessException instead of InvalidProgramException.
15234
15235 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15236
15237         * mini.c: CoreCLR security checks.
15238
15239         * mini.h: Removed MonoSecurityMode (moved to
15240         metadata/security-manager.h) and mono_security_mode global var
15241         (replaced by set/get functions in security-manager.h).
15242
15243         * driver.c: Added "core-clr-test" security mode for testing.  Used
15244         set-function for setting security mode.
15245
15246 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15247
15248         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15249         the new jit_info_table.
15250
15251         * driver.c: Test code for the new jit_info_table (enabled by the
15252         define MONO_JIT_INFO_TABLE_TEST).
15253
15254 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15255
15256         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15257         detection of call <REG> instruction sequence. Fixes build on freebsd.
15258
15259 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * mini-exceptions.c: Fix a warning.
15262
15263 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15266         stack overflow handling code on amd64 too.
15267
15268         * mini-exceptions.c (mono_setup_altstack): Make this use 
15269         mono_thread_get_stack_bounds ().
15270
15271         * mini-x86.h: Disable sigaltstack on solaris x86.
15272
15273 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15274
15275         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15276
15277 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15278
15279         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15280
15281 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15284
15285         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15286
15287 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15288
15289         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15290         due to alignment.
15291
15292 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15293
15294         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15295         to be emitted (bug #82281).
15296
15297 2007-08-01  Martin Baulig  <martin@ximian.com>
15298
15299         Merged the `debugger-dublin' branch.
15300
15301         * debug-debugger.h (MonoDebuggerInfo):
15302         Removed the `old_*' compatibility entries.
15303         Added `debugger_version' and `data_table'.
15304         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15305         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15306
15307         * debug-mini.c
15308         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15309         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15310         instead of a `gconstpointer'.
15311         (mono_debugger_insert_method_breakpoint): Return a
15312         `MonoDebugMethodAddressList *'.
15313
15314 2007-06-28  Martin Baulig  <martin@ximian.com>
15315
15316         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15317
15318 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15319
15320         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15321         __builtin_frame_address () since it is broken on older gcc versions.
15322
15323 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15324
15325         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15326         on the stack overflow handling and made the managed stack overflows
15327         catchable in most cases using soft guard pages.
15328         * exceptions-x86.c: added code to restore the protection in the soft
15329         guard pages at the end of exception handling.
15330
15331 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15332
15333         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15334
15335 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15338         exception handling.
15339
15340 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15341
15342         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15343         signal handling support until it has been ported to the new mechanism.
15344         * mini.c: fixed stack overflow detection and use the new
15345         architecture code  to handle signals on the altstack.
15346
15347 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15348
15349         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15350         stack overflows on the alt stack.
15351
15352 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15353
15354         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15355         stack overflows on the alt stack.
15356
15357 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15358
15359         * exceptions-ppc.c: cleanup preparing for altstack support.
15360
15361 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15362
15363         * exceptions-arm.c: cleanup preparing for altstack support.
15364
15365 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15366
15367         * mini.c (print_jit_stats): Output hazard pointer stats.
15368
15369 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15370
15371         * driver.c, mini.c: Replaced security mode flags with a single
15372         enum variable.
15373
15374 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15375
15376         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15377
15378 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15379
15380         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15381         (which doesn't do anything yet) for activating Core CLR
15382         (Silverlight) security.
15383
15384 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15385
15386         * mini-codegen.c: work around a possible gcc bug on arm.
15387
15388 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15389
15390         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15391         message for platforms that don't support AOT compilation.
15392
15393 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15394
15395         * mini.h, mini.c, driver.c: temporary smcs hack.
15396
15397 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15398
15399         * mini-arm.h, mini-arm.c: arm EABI fixes.
15400
15401 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15402
15403         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15404         case.
15405
15406         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15407         trampolines taking a method argument.
15408
15409         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15410
15411         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15412         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15413
15414         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15415         JIT compilation throws an exception. Fixes #82050.
15416
15417 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15418
15419         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15420         with the MONO_EXCEPTION_ defines.
15421
15422 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15425         #82117.
15426         
15427         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15428         the cause of an assertion.
15429
15430 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15433         removed.
15434
15435 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15438         assert. Should fix #82103.
15439
15440 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15441
15442         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15443         here too. Fixes #82095.
15444
15445         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15446         addresses.
15447
15448         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15449
15450         * mini-amd64.h: Enable IMT for amd64.
15451         
15452         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15453
15454 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15455
15456         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15457
15458 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15459
15460         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15461         as soon as check_linkdemand sets an exception_type.
15462
15463 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15464
15465         * mini-x86.c: fixed offsets for IMT call sequence.
15466         * mini-x86.h: enable IMT again.
15467
15468 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15469
15470         * trace.c (mono_trace_enter_method): Decode MonoType too.
15471
15472         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15473
15474         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15475
15476         * mini-amd64.c: Add preliminary IMT implementation.
15477         
15478 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15479
15480         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15481         understand the new IMT-base interface invocation (thanks to
15482         Daniel Nauck for the report and the remote debugging session).
15483
15484 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15485
15486         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15487
15488 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15489
15490         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15491
15492 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15493
15494         * mini-trampolines.c: implement AOT IMT support.
15495         * mini-x86.h: enable IMT support for wider testing.
15496
15497 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * inssel.brg (emit_imt_argument): Add aot support here.
15500
15501         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15502
15503 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15506         of the IMT implementation, partially from massi, with my
15507         implementation of the bsearch sequence. Disabled by default until
15508         the AOT code is implemented.
15509
15510 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15511
15512         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15513
15514         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15515
15516 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15517
15518         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15519         arch-independent IMT JIT code from Massimiliano
15520         Mantione (massi@ximian.com) with small cleanups from me.
15521
15522 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15523
15524         * Makefile.am: fix svn invocation to get the svn revision to be
15525         independent of the local language (build fix).
15526
15527 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15528
15529         * mini.c (inline_method): Reset cfg->exception_type if the
15530         inlining is aborted.  Fixes: 82049.
15531
15532 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15533
15534         * mini.c: remove assert from exception handling code when exception_ptr
15535         is not set.
15536
15537 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15538
15539         * mini.c (mono_codegen): Add an assert.
15540
15541         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15542         enter and leave code.
15543         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15544
15545 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15546
15547         * mini-ppc.c: fixed memory corruption for localloc(0)
15548         (bug #81852).
15549
15550 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15551         
15552         * mini.c: Fix warnings.
15553
15554 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15557         to emit better double->int conversions.
15558
15559 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15560
15561         * mini.c: the provided Min/Max optimizations are valid for unisgned
15562         ints.
15563
15564 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15565
15566         * 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
15567
15568 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15569
15570         * mini.c (mono_running_on_valgrind): Add support for reporting the
15571         method and  its boundaries to valgrind.
15572
15573 2007-06-28  Martin Baulig  <martin@ximian.com>
15574
15575         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15576
15577 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15578
15579         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15580
15581         * generic.2.cs: Add new test case.
15582
15583 2007-06-25  Martin Baulig  <martin@ximian.com>
15584
15585         Merged the `debugger-dublin' branch.
15586
15587         * debug-mini.c
15588         (mono_debugger_insert_method_breakpoint): New public method.
15589         (mono_debugger_remove_method_breakpoint): Likewise.
15590         (mono_debugger_check_breakpoints): New static method.
15591         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15592
15593         * debug-debugger.h (MonoDebuggerInfo):
15594         Renamed (to keep backward compatibility in the vtable):
15595         `insert_breakpoint' -> `old_insert_breakpoint'.
15596         `remove_breakpoint' -> `old_remove_breakpoint'.
15597         `create_string' -> `old_create_string'.
15598         `lookup_class' -> `old_lookup_class'.
15599         `lookup_type' -> removed; changed into a dummy field.
15600         `lookup_assembly' -> `old_lookup_assembly'.
15601         Added (same functionality, but different signature):
15602         `create_string', `lookup_class', `lookup_assembly'
15603         Added new:
15604         `get_method_addr_or_bpt', `remove_method_breakpoint',
15605         `runtime_class_init'.
15606
15607         * debug-debugger.c: Merged the `debugger-dublin' branch.
15608
15609 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15610
15611         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15612         well.
15613         (peephole_pass): Likewise.
15614
15615 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15616
15617         * driver.c: hopefully make setaffinity work also for ancient
15618         versions of linux.
15619
15620 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15621
15622         * driver.c : win32 build fix.
15623
15624 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15625
15626         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15627         processor if it is set.
15628
15629 2007-06-21  Martin Baulig  <martin@ximian.com>
15630
15631         * debug-mini.h: New file.
15632
15633         * debug-mini.c
15634         (mono_debugger_insert_breakpoint_full): Moved here from
15635         ../metadata/mono-debug-debugger.c.
15636         (mono_debugger_remove_breakpoint): Likewise.
15637         (mono_debugger_breakpoint_callback): Likewise.
15638
15639 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15640
15641         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15642         changes in MonoGenericClass.
15643
15644 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15647
15648 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15649
15650         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15651         removal of MonoGenericMethod.
15652
15653 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15654
15655         * mini-exceptions.c: hooks for the exception events profiling API.
15656
15657 2007-06-14  Randolph Chung  <tausq@debian.org>
15658
15659         * Makefile.ma: Add hppa target.
15660         * mini-arch.h: Include mini-hppa.h
15661         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15662         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15663         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15664
15665 2007-06-14  Randolph Chung  <tausq@debian.org>
15666
15667         * inssel.brg: Add rules for "chained" compare-branch operations so that
15668         a single compare op can affect multiple branches.  Adjust cost for
15669         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15670         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15671         cost for some rules so that they can more easily be overridden by
15672         per-arch rules (with fixes from lupus).
15673         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15674
15675 2007-06-13  Randolph Chung  <tausq@debian.org>
15676
15677         * mini-ops.h: Reorder branch ops so that they match the order of the
15678         corresponding CEE_* ops.  The code expects them this way.
15679         Add new ops for HPPA target.
15680         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15681
15682 2007-06-13  Randolph Chung  <tausq@debian.org>
15683
15684         * mini-exceptions.c: Handle cases where the stack grows towards
15685         larger addresses.
15686         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15687
15688 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15689
15690         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15691         counter.
15692         * driver.c: explain where a non-matching corlib is found.
15693
15694 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15695
15696         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15697
15698 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15699
15700         * mini-exceptions.c: Generate a method profile leave event during
15701         an exception to ensure that the profiler gets notified.
15702
15703 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15706         branch.
15707
15708         * cpu-amd64.md: Add long_and/or/xor opcodes.
15709
15710 2007-06-06  Wade Berrier  <wberrier@novell.com>
15711
15712         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15713         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15714         length of instruction shr_imm (expected 8, got 10)
15715
15716 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15717
15718         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15719
15720 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15721
15722         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15723         MonoInternalHashTable again (fixed bug in the internal hash table
15724         code).
15725
15726 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15727
15728         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15729         Have to figure out what makes it crash the SWF regression.
15730
15731 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15732
15733         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15734
15735 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15736
15737         * mini.c: optimize out the type check when storing null in a
15738         reference array.
15739
15740 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15741
15742         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15743         MonoInternalHashTable.
15744
15745 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15746
15747         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15748         signed integer methods.
15749
15750 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15751
15752         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15753         permanently since the current approach doesn't work.
15754
15755 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15756
15757         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15758         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15759
15760 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15763         the sreg2==rdx case.
15764         
15765         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15766         account if it contains a rex prefix.
15767         (peephole_pass): Handle OP_FMOVE as well.
15768
15769 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15772         as it causes regressions.
15773
15774 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15777         static case as well.
15778
15779         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15780
15781         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15782         (mono_arch_get_this_arg_from_call): Ditto.
15783
15784         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15785
15786         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15787         invoke_impl field.
15788
15789         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15790         (mono_arch_get_this_arg_from_call): Ditto.
15791
15792         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15793         
15794         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15795         try to create optimized invoke code and use that for further invocations. 
15796         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15797
15798         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15799
15800 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15801
15802         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15803         sealed classes or methods.
15804         *devirtualization.cs: tests for the new optimization
15805
15806 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15809         by the update_volatile () function.
15810
15811 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15812
15813         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15814         require it.
15815
15816         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15817
15818 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15819
15820         * mini.c: Add configure checks for header files.
15821         * mini-x86.c: Add configure checks for header files.
15822         * trace.c: Add configure checks for header files.
15823         * aot-runtime.c: Add configure checks for header files.
15824         * aot-compiler.c: Add configure checks for header files.
15825         * driver.c: Add configure checks for header files.
15826         * mini-codegen.c: Add configure checks for header files.
15827         
15828         Code is contributed under MIT/X11 license.
15829
15830 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15833         icompare_imm -128 + op_iclt. Fixes #81703.
15834
15835 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15838
15839 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15840
15841         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15842         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15843         so that all isinst checks now use "interface_bitmap".
15844
15845 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15846
15847         * cpu-amd64.md (jmp): Fix a warning.
15848
15849         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15850
15851         * basic.cs: Add new regression test.
15852
15853         * basic.cs: Remove test which is now in basic-long.cs.
15854
15855         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15856
15857         * basic-long.cs: Add new test.
15858         
15859 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15860
15861         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15862
15863 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15864
15865         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15866
15867         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15868         places.
15869         
15870         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15871         throwing code a bit.
15872
15873         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15874         the exception throwing code a bit.
15875
15876         * mini-x86.c (get_call_info): Allocate result from a mempool.
15877
15878 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15879
15880         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15881
15882         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15883
15884         * mini.h (MonoCompile): Add 'token_info_hash' field.
15885
15886         * mini.c: Save token->method associations during compilation so the AOT 
15887         compiler can use it.
15888         
15889         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15890         which reference generic classes and methods.
15891
15892 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15895
15896         * aot-compiler.c (compile_method): Fix a typo in a comment.
15897
15898         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15899
15900         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15901         everything generic.
15902
15903         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15904
15905 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15906
15907         * mini.h (MonoCompile): Add 'args' field.
15908
15909         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15910         into cfg->args.
15911
15912         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15913
15914 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15915
15916         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15917
15918         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15919
15920         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15921         opcodes for some opcodes.
15922
15923         * mini.h *.brg *.c: Use the new opcodes.
15924
15925 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15926
15927         * mini.h: Bumped aot revision.
15928
15929         * inssel.brg: modified code generation of type checks for interfaces
15930         to use the new "MonoClass.interface_bitmap" instead of the old
15931         "MonoClass.interface_offsets".
15932
15933 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15934
15935         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15936
15937 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15938
15939         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15940         64 bit platforms.
15941
15942 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15943
15944         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15945
15946 2007-04-27  Wade Berrier  <wberrier@novell.com>
15947
15948         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15949         mini.h) to fix build.
15950
15951 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15954         
15955         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15956         causes the corlib unit tests to fail.
15957
15958 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15961
15962         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15963
15964         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15965         opcodes to the comparison relations.
15966
15967         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15968         opcodes to their types.
15969         
15970         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15971
15972         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15973         it in cfg->arch.cinfo.
15974
15975         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15976
15977         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15978         cfg->cil_offset_to_bb.
15979
15980 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15981
15982         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15983         created becase of initlocals.
15984
15985 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15986
15987         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15988         Sergey Tikhonov <tsv@solvo.ru>.
15989
15990 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15991
15992         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15993
15994 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15995
15996         * cpu-s390.md (break): Correct the length of break instruction.
15997
15998 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15999
16000         * mini.c: fix a couple of soft-float issues and comments.
16001
16002 2007-04-15  Miguel de Icaza  <miguel@novell.com>
16003
16004         * trace.c (is_filenamechar): - is also a filename char.
16005
16006 2007-04-15  Neale Ferguson <neale@sinenomine.net>
16007
16008         * mini-s390.c: Correct checking for enum type in return value processing.
16009
16010 2007-04-14  Raja R Harinath  <rharinath@novell.com>
16011
16012         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
16013         (version.h): Makefile is in the build directory.
16014
16015 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
16016
16017         * mini-amd64.h: fix for assertion failure on Solaris/amd64
16018
16019 2007-04-11  Martin Baulig  <martin@ximian.com>
16020
16021         * mini.c (can_access_member): Fix handling of generic classes;
16022         fixes #81259.
16023
16024 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
16025
16026         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
16027
16028 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
16031
16032 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16033
16034         * mini-codegen.c: make sure the right spill amount is
16035         used for fp or integer registers (fixes the float_sub_spill() on ppc).
16036
16037 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
16038
16039         * mini-ppc.c: fixes for the fp_branch_nan test.
16040
16041 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * basic.cs: Comment out new test which still fails on ia64.
16044
16045 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16046
16047         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
16048
16049 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16050
16051         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
16052
16053 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
16054
16055         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
16056         on 64 bit machines. Fixes part of #80738.
16057
16058         * basic.cs: Add regression test.
16059
16060 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16061
16062         * inssel.brg basic.cs: Revert previous change to fix build.
16063
16064         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
16065         platforms.
16066         
16067         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
16068
16069         * basic.cs: Add new regression test.
16070
16071 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
16072
16073         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
16074         many arguments.
16075
16076 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16077
16078         * cpu-s390x.md: Correct length of break instruction.
16079
16080 2007-03-16  Neale Ferguson <neale@sinenomine.net>
16081
16082         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
16083         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
16084
16085 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
16086
16087         * *.c: Begin WIN64 port.
16088         * mini.c:  Use correct register in profiler.
16089         * mini-amd64.c: No inline assembly on Win64.
16090         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
16091         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
16092         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
16093         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
16094         mono_arch_ip_from_context for Win64.
16095         
16096         Contributed under MIT/X11 license.
16097
16098 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * exceptions-amd64.c (seh_handler): Ditto.
16101
16102         * exceptions-x86.c (seh_handler): Fix a memory leak.
16103
16104 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
16105
16106         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
16107         mini-s390x.c: fixed peephole optimizations to deal
16108         correctly with 1 and 2 byte reload avoidance.
16109
16110 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
16111
16112         * cpu-s390.md, cpu-s390x.md: update localloc length.
16113
16114 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16115
16116         * cpu-g4.md: added missing descriptions.
16117
16118 2007-03-14  Miguel de Icaza  <miguel@novell.com>
16119
16120         *  Makefile.am: Add support so the tail tests are not executed on
16121         PowerPC as that is a known limitation of the PowerPC port.
16122
16123 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16124
16125         * runmdesc.bat:  Move to msvc directory.
16126         
16127 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16128
16129         * runmdesc.bat:  Run executable that was produced by the current
16130         target and sent via an argument.
16131         
16132 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
16133
16134         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
16135         #81102.
16136
16137         * generics.2.cs: Add regression test.
16138
16139 2007-03-09  Wade berrier  <wberrier@novell.com>
16140
16141         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
16142
16143 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
16146         AOT code depends on this.
16147
16148 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16149
16150         * mini.c: more precise tracking of types in the eval stack
16151         (part of fix for bug #81044).
16152
16153 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
16156
16157         * aot-compiler.c (encode_patch): Remove an obsolete comment.
16158
16159 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16160
16161         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
16162
16163         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
16164
16165 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
16166
16167         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
16168         a pointer on 64 bit systems. Fixes #80190.
16169
16170         * iltests.il: Add new regression test.
16171
16172 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16173
16174         * mini.c: inline a constant for Environment.IsRunningOnWindows.
16175
16176 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
16177
16178         * trace.c: Remove an erroneous alignemnt check when tracing.
16179           Fixes --trace on OSX86.
16180
16181 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16182
16183         * mini-$(arch).h: initialize SP in context for all the archs.
16184
16185 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
16186
16187         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16188         regressions in the thread tests.
16189
16190 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16191
16192         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16193         - fixed implementation of LOCALLOC opcode
16194         - implemented non-un compare for floats
16195         - code cleanup
16196         - implementation of FDIV and CKFINITE opcodes
16197         - fixes for latest mono updates
16198         - additional arch opcodes
16199
16200 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16201
16202         * Makefile.am: simplify and merge rules for cross-compilation.
16203
16204 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16205
16206         * local-propagation.c: Actually *apply* the fix for bug 80591...
16207
16208 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16209
16210         * mini-exceptions.c: backuot part of the last change
16211         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16212
16213 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16214         * inssel.brg: Fix bug 59286.
16215
16216
16217 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16218
16219         * mini-exceptions.c: patch from Zoltan to correctly check for
16220         stack boundaries (using the stack register, not the frame register),
16221         fixes bugs #80724, #79717.
16222
16223 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16224
16225         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16226         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16227
16228         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16229         presence of frame pointer elimination.
16230
16231 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16232         
16233         * mini-x86.h: NetBSD UCONTEX_REG defines.
16234
16235 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16236
16237         * inssel-amd64.brg: Fix amd64 build.
16238
16239 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16240
16241         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16242         on amd64.
16243
16244 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16245
16246         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16247         ends.
16248
16249         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16250
16251 2007-01-30 Mark Mason <mason@broadcom.com>
16252
16253            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16254            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16255            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16256            beginning support for CEE_JMP [not quite working yet]
16257            * tramp-mips.c: LMF handling now works
16258         
16259 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16260
16261         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16262
16263         * mini.h (NULLIFY_INS): New macro.
16264
16265 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16266
16267         * mini.c: statistical profiler fix for windows, patch
16268         from Tor Lillqvist (tml@novell.com).
16269
16270 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16271         * local-propagation.c: Fix bug 80591.
16272
16273 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16274
16275         * Makefile.am: put back the --export-dynamic option as with
16276         the previous gmodule flags (thanks to Robert Jordan).
16277
16278 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16279
16280         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16281
16282         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16283         simplify and speed up the local register allocator. Also rename some fields
16284         like iassign->vassign.
16285         
16286         * regalloc.c: Remove some functions which are no longer used since their
16287         inlined version is in mini-codegen.c.
16288         
16289         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16290
16291         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16292
16293 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16294
16295         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16296         narrowing. Fixes #80622.
16297
16298         * iltests.il: Add new regresssion test. 
16299
16300 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16301
16302         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16303         debug-debugger.c, debug-debugger.h: warning fixes.
16304         * driver.c: updated copyright year and made it fit in one line.
16305
16306 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16307
16308         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16309
16310 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16311
16312         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16313
16314         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16315
16316         * iltests.il: Add new test for bug #80507.
16317
16318 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16319
16320         * mini-arm.h: use soft-float also on vfp for now.
16321
16322 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16323
16324         * mini.c: fix some more soft-float issues.
16325
16326 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16327
16328         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16329
16330 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16331         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16332         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16333         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16334
16335 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16336
16337         * mini-arm.c: typo fix.
16338
16339 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16340
16341         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16342
16343 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16344
16345         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16346         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16347
16348         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16349
16350         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16351
16352         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16353         
16354         * inssel.brg: Fix a warning.
16355
16356         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16357
16358         * abcremoval.c ssa.c ssapre.c: Update after this change.
16359         
16360         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16361
16362         * dominators.c (df_set): Use mono_bitset_union_fast.    
16363
16364 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16365
16366         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16367         mini-codegen.c: reduce relocations and memory usage for the cpu
16368         description.
16369
16370 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16371
16372         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16373
16374         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16375         to reduce their size.
16376
16377 2007-01-19 Mark Mason <mason@broadcom.com>
16378
16379         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16380         * mini-mips.c: more configuration macros, support long conditional branches, additional
16381         asserts, fix epilog instrumentation.
16382         * mini-mips.h: use standard stack walk
16383         * cpu-mips.md: increase size of div, rem and conditional branches
16384         
16385 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16386
16387         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16388         to cpu spec data.
16389
16390 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16391
16392         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16393         (compile_method): Ditto.
16394
16395         * aot-runtime.c (decode_klass_info): Ditto.
16396
16397         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16398         needed by the code generated by inssel.brg. Also fix a warning.
16399
16400 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini.c: deal with enums that become genericinsts by
16403         being nested in a generic class (bug #79956).
16404
16405 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16406
16407         * mini.c: match the generic definition to check for
16408         private access with generic types (bug #78431).
16409
16410 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16411
16412         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16413         to make life easier for people cross-compiling that insist on not
16414         using scratchbox.
16415
16416 2007-01-17 Mark Mason <mason@broadcom.com>
16417
16418         * inssel-long.brg: patch to deal with mips missing flags
16419         * inssel-long32-mips.brg: implement overflow checks
16420         * insset-mips.brg: implement overflow checks
16421         * mini-mips.h: implement conditional exception handling
16422         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16423           Remove unused code, minor cleanups.
16424         * exceptions-mips.c: minor cleanups
16425         * mini-ops.h: add mips conditional exception ops
16426         * cpu-mips.md: add mips conditional exception ops
16427
16428         
16429 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16430
16431         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16432         to deal with mips missing of flags.
16433
16434 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16435
16436         * exceptions-ppc.c: execute fault handlers.
16437
16438 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16439
16440         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16441
16442 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16443
16444         * mini.c: handle also floating point values in initialize_array.
16445
16446 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16449         array initialization and make it conditional on the intrins option.
16450
16451 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16452
16453         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16454         relocations and put the patch info names close to the enum definition.
16455
16456 2007-01-15 Mark Mason <mason@broadcom.com>
16457
16458         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16459
16460 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16461
16462         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16463
16464 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16465
16466         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16467
16468 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16469
16470         * Makefile.am: distribute the mips sources.
16471
16472 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16473
16474         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16475         directly.
16476
16477 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16478
16479         * cpu-x86.md: back out for now as this triggers other regressions.
16480
16481 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16482
16483         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16484         to eax:edx, so ecx can't get allocated to them (bug #80489).
16485
16486 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini.c, mini-exceptions.c: enabled running fault handlers
16489         (bug #80469).
16490
16491 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16492
16493         * driver.c: If nothing fail, do not use the string "failed",
16494         because it makes it very annoying to view test result logs on the
16495         web. 
16496
16497 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16498
16499         * debug-debugger.c (mono_debugger_main): Rename "main" to
16500         "main_method" to prevent a warning.
16501
16502         Remove a warning for unused field.
16503
16504 2006-12-28  Martin Baulig  <martin@ximian.com>
16505
16506         * debug-debugger.c
16507         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16508
16509 2006-12-22  Martin Baulig  <martin@ximian.com>
16510
16511         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16512         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16513         seperate `.mdb_debug_info' section, so we can access it from the
16514         debugger even if the binary is stripped.
16515
16516         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16517         from the `.mdb_debug_info' here to prevent the linker from
16518         removing that section.
16519
16520         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16521         mdb-debug-info64.s.
16522
16523 2006-12-19  Robert Jordan  <robertj@gmx.net>
16524
16525         * mini-x86: enable the code to return small structures in
16526         registers for FreeBSD as well. Fixes bug #80278.
16527         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16528
16529 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16530
16531         * mini-x86.c: align the stack when calling the profiler
16532         function instrumenting the prolog (on OSX).
16533
16534 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16535
16536         * mini.c: emit a break opcode where Debugger.Break () is called.
16537
16538 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16539
16540         * mini.c (mono_method_to_ir): Provide useful information on this
16541         assert, to prevent others from debugging like I did.
16542
16543 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16544
16545         * mini.c: enable code which was incorrectly commented
16546         (bug #80235).
16547
16548 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16549
16550         * mini-x86.c: enable on OSX, too, the code to return small
16551         structures in registers.
16552
16553 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16554
16555         * mini-x86.c: remove the use of the dynamic code manager here, too.
16556
16557 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16558
16559         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16560         mono_debugger_create_notification_function() to use
16561         mono_global_codeman_reserve () instead of a dynamic code manager.
16562
16563 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16564
16565         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16566         ves_array_element_address() jit icall and use a generated
16567         managed method instead (which is about 4 times faster for a rank 3
16568         array access).
16569
16570 2006-11-29  Mark Mason  <mason@broadcom.com>
16571
16572         * basic-calls.cs: additional tests for passing
16573         structures as function arguments.
16574
16575 2006-11-29  Mark Mason  <mason@broadcom.com>
16576
16577         * mini-mips.h: disable custom exception handling
16578         * mini-mips.c: throw/rethrow should use jalr to call
16579         exception stubs.  Fixed bug with passing structures
16580         by value. More support for tracing floating point
16581         functions.
16582
16583 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * mini.c: fixed typo in the soft-float ldind.r4 handling
16586         (bug #80086).
16587
16588 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16589
16590         * mini.c, mini.h, driver.c: added --runtime command line
16591         option to select a different runtime than the autodetected one.
16592         * jit.h: added API for embedders to initialize with a specific
16593         runtime version.
16594
16595 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16596
16597         * mini.c: handle also boxing of r4 values (bug #80024).
16598
16599 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16600
16601         * mini-ppc.c: force indirect calls until we reserve
16602         enough address space for all the generated code.
16603
16604 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16605
16606         * exceptions-arm.c: workaround bugs in the libc definition
16607         of struct ucontext.
16608
16609 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16610
16611         * inssel.brg: fixes from me and Mark Mason.
16612
16613 2006-11-23  Dick Porter  <dick@ximian.com>
16614
16615         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16616         semaphore display now we've fixed the initial value
16617
16618 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16619
16620         * inssel.brg: partially revert the last change to fix the build.
16621
16622 2006-11-21  Mark Mason  <mason@broadcom.com>
16623
16624         * inssel.brg: Add and use compare-and-branch macros to support
16625         architectures that do not have condition code registers (ie. MIPS).
16626         * *-mips.{c,brg,md}: Fix copyright statements
16627
16628 2006-11-20  Mark Mason  <mason@broadcom.com>
16629
16630         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16631         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16632         * mini.h: Added declaration for mono_print_ins()
16633         * mini-codegen.c: added ins_spec initializer for MIPS
16634         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16635         vreg to be virtual and hreg to be non-virtual.
16636         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16637         is not yet working/implemented correctly.
16638         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16639         non-static, fixup calls to print_ins() from other parts in the file.
16640
16641 2006-11-20  Mark Mason  <mason@broadcom.com>
16642
16643         * basic-calls.cs: added tests for passing structures as arguments
16644         to calls.
16645
16646 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16647
16648         * inssel-long32.brg: optimize signed division by power of two.
16649
16650 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16651
16652         * mini-arm.c: added support for interworking with thumb code
16653         (mono must be still be built using the ARM instruction encoding).
16654
16655 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16656
16657         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16658         verifier has different rules for it.   Fixes a few verifier issues
16659         in the test suite.
16660
16661         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16662         at the end, so people know what happened.
16663
16664 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16665
16666         * brach-opts.c: in optimize_exception_target() make sure we
16667         are in a catch clause (fixes bug #79871).
16668
16669 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16670
16671         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16672         more soft-float support fixes.
16673
16674 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16675
16676         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16677         that are passed half on the stack and half in registers.
16678
16679 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16680
16681         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16682         more mips integration work from Mark E Mason 
16683         <mark.e.mason@broadcom.com>.
16684
16685 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16686
16687         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16688         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16689         tramp-mips.c: added sources for the mips port, not
16690         integrated in the build yet. Contributed by
16691         Mark E Mason <mark.e.mason@broadcom.com>.
16692
16693 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16694
16695         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16696
16697 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16698
16699         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16700         put the soft-float rules in its own file since it seems to
16701         break s390 compilation.
16702
16703 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16704
16705         * mini-arm.c: fixed wrnings.
16706
16707 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16708
16709         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16710         inssel-arm.brg: ARM support for soft-float.
16711
16712 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16713
16714         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16715         loads and stores of 32 bit fp values.
16716
16717 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16718
16719         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16720
16721         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16722         works. Fixes #79852 and #79463.
16723
16724 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16727         more soft-float support WIP and fixes.
16728
16729 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16730
16731         * mini-arm.c: some VFP updates.
16732
16733 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16734
16735         * mini-exceptions.c: 0 is a valid local var offset in some
16736         architectures, don't assert (bug #78508).
16737
16738 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16739
16740         * exceptions-arm.c: fixed off by one error in stack walk code.
16741
16742 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16743
16744         * mini.h, mini.c: more precise tracking of type load exceptions.
16745
16746 2006-11-03  Robert Jordan  <robertj@gmx.net>
16747
16748         * Makefile.am: [WIN32] Add monow.exe target.
16749         * driver.c: [WIN32] Don't detach the console when debugging.
16750         Fixes bug #79797.
16751         
16752 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16753
16754         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16755
16756 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16757
16758         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16759
16760         * driver.c (mini_regression): Fix --regression with AOT.
16761
16762         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16763
16764 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16765
16766         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16767
16768         * mini-sparc.h: Don't use sigaction on sparc/linux.
16769
16770         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16771
16772         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16773
16774         * mini-exceptions.c: Add proper include files for getpid ().
16775
16776 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16777
16778         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16779         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16780         method.
16781
16782         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16783         name cache to reduce its size.
16784
16785         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16786
16787 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16788
16789         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16790         the mono_lmf TLS variable.
16791
16792         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16793         trampoline lmf frames.  
16794
16795         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16796
16797 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16800         the mono_lmf TLS variable.
16801
16802         * mini-exceptions.c: Access the LMF structure through accessors.
16803
16804         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16805         variable instead of in jit_tls->lmf.
16806
16807         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16808         
16809         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16810         trampoline lmf frames.
16811
16812         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16813
16814 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16815
16816        * mini.c trace.c mini-x86.c: Revert these too.
16817         
16818        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16819        signature change.
16820
16821 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16822
16823         * genmdesc.c: removed now dead code.
16824
16825 2006-10-09  Robert Jordan <robertj@gmx.net>
16826
16827         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16828
16829 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16830
16831         * mini.h: do not leave gaps in the opcode values.
16832
16833 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16834
16835         * jit-icalls.h: flag functions as internal here, too.
16836
16837 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16838
16839         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16840         functions with the internal attribute.
16841
16842 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16843
16844         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16845
16846 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16847
16848         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16849         for soft-float.
16850
16851 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16852
16853         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16854         tail calls as on other platforms.
16855
16856         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16857
16858         * iltests.il: Add a few tailcall tests.
16859
16860 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16861
16862         * driver.c: fix loop for old compilers (bug #79521).
16863
16864 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16865
16866         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16867
16868         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16869
16870         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16871         metadata without any code.
16872
16873         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16874         more precise debugging information using gdb.
16875
16876 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16877
16878         * inssel-ia64.brg: Make the helper methods static.
16879
16880 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16881
16882         * inssel-x86.brg: make the helper methods static.
16883
16884 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16885
16886         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16887
16888 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16889
16890         * mini.c: updates for monoburg changes.
16891         * inssel.brg: make a few helper functions static as they should.
16892
16893 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16894
16895         * Makefile.am: Move mini-codegen.c to common_sources.
16896
16897 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16898
16899         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16900         instructions.
16901         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16902         mini-ppc.h: port to use the common local register allocator.
16903
16904 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16905
16906         * mini.h: Remove the comment too then.
16907
16908 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16909
16910         * mini.h: put back backend.data which is to be used shortly and
16911         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16912         pointers on 4 byte boundaries it'd have much bigger issues running
16913         and you can ifdef it out anyway.
16914
16915 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16916
16917         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16918         MonoInst size by 4 bytes on 64 bit machines.
16919
16920 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16921
16922         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16923         replacement with more meaningful field names. Arch maintainers, please
16924         check the assigned names are good enough for your arch.
16925
16926 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16927
16928         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16929         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16930
16931 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16932
16933         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16934         relocations and memory requirements, put the optimization flags
16935         definitions in their own file.
16936
16937 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16940
16941         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16942
16943 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16944
16945         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16946
16947 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16948
16949         * inssel.brg: use the correct function to get the size of an item
16950         in an array, given an element class.
16951         * aot-compiler.c: do not access class->class_size directly.
16952
16953 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16954
16955         * mini.h, debug-mini.c: added a debugging function to print
16956         info about local variables and arguments in a jitted method.
16957
16958 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16961
16962         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16963
16964 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16965
16966         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16967         inner and outer loops when passing vtypes.
16968
16969 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16970
16971         * mini-ppc.c: take into account the cpu errata for cache flushing
16972         which caused some random errors (bug #79381).
16973
16974 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16977         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16978
16979 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16980
16981         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16982         loaded.
16983
16984         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16985         freebsd ports tree.
16986
16987         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16988         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16989
16990         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16991         displacement.
16992
16993 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16996
16997 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
17000         macro does not have to be changed during debugging.
17001
17002         * 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>.
17003
17004         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
17005
17006         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
17007         
17008         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
17009         MONO_ARCH_NO_EMULATE_MUL is defined.
17010
17011         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
17012
17013         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
17014
17015         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
17016
17017         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
17018         
17019 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
17020
17021         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
17022         stuff to mini-exceptions.c where it is used.
17023
17024         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
17025         setup code, the real one is in mini-exceptions.c.
17026
17027         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
17028         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
17029         some changes from the freebsd ports tree.
17030
17031         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
17032         constants.
17033         
17034         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
17035
17036 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
17037
17038         * mini.c: on Linux, check for /proc to be mounted
17039         (bug# 79351, novell bug#201204).
17040
17041 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17042
17043         * mini.c: handle cases where pthread_attr_getstack() behaves
17044         incorrectly (bug #78096).
17045
17046 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
17047
17048         * mini-arm.c: support larger stack frames (bug #79272).
17049
17050 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
17053
17054         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
17055         tokens.
17056
17057         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
17058         mono_class_from_name () to find a class from its name.
17059
17060         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
17061
17062 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
17063
17064         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
17065
17066 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
17067
17068         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
17069
17070 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
17071
17072         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
17073         callinfo->trampoline.
17074
17075         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
17076         fixes #79271.
17077         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
17078         future.
17079
17080 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
17081
17082         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
17083
17084 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
17085
17086         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
17087         stats.method_trampolines, it is already done by the generic trampoline code.
17088
17089         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
17090         
17091 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
17094
17095         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
17096
17097         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
17098
17099         * mini.c (print_jit_stats): Print mscorlib mempool size too.
17100         
17101         * mini.c (print_jit_stats): Print new stats.
17102
17103         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
17104
17105 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
17108         Address on two dimensional arrays. Fixes #78729.
17109
17110         * mini.h (MonoCompile): Add a 'skip_visibility' field.
17111
17112         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
17113         a method.
17114
17115         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
17116
17117         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
17118         #79130.
17119         
17120         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
17121         a race condition.
17122         (mini_get_ldelema_ins): Ditto.
17123
17124 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
17125
17126         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
17127         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
17128         Fixes #79213.
17129
17130 2006-08-29 Neale Ferguson <neale@sinenomine.net>
17131
17132         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
17133         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
17134
17135         * exceptions-s390x.c: Cosmetic change.
17136
17137         * tramp-s390.c: Fix warning.
17138
17139         * cpu-s390.md: Correct length of mul_imm.
17140
17141 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17142
17143         * aot-compiler.c: added binary writer with ELF backend
17144         implementation (only on Linux/x86 for now).
17145
17146 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17147
17148         * Makefile.am: Don't run net 2.0 AOT tests.
17149
17150         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
17151         (mono_compile_assembly): Skip net 2.0 assemblies as well.
17152
17153         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
17154
17155 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17156
17157         * aot-compiler.c: simplified and refactored the asm-writing code
17158         to allow different backends.
17159
17160 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
17161
17162         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
17163
17164         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
17165         little. Share patches of type TYPE_FROM_HANDLE as well.
17166
17167         * mini.c (mono_patch_info_equal): New helper function.
17168         (mono_patch_info_hash): Ditto.
17169
17170         * aot-compiler.c (emit_method_code): Fix s390 build.
17171
17172         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
17173         is not handled because it is stored as a flag and not as a type ctor. Fixes
17174         #79016.
17175
17176 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
17177
17178         * aot-compiler.c: Fix computation of GOT slot statistics.
17179         
17180         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
17181         Also remove support for not PIC AOT.
17182
17183         * mini.h: Bump AOT file format version.
17184
17185         * objects.cs: Add a test for #78990.
17186
17187         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17188         (peter.dettman@iinet.net.au). Fixes #79087.
17189
17190         * basic-long.cs: Add a test for the above.
17191
17192 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17193
17194         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17195         
17196         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17197         code somewhat.
17198
17199 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17200
17201         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17202         exceptions.
17203
17204 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17205
17206         * mini.c: Don't verify COM proxy invoke calls
17207         
17208
17209 2006-08-10  Dick Porter  <dick@ximian.com>
17210
17211         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17212         which process is holding semaphores locked.
17213
17214 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17215
17216         * mini-ia64.c mini-amd64.c: Fix #79027.
17217
17218         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17219
17220         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17221
17222         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17223         implicit arguments in a vararg call. Fixes #79027.
17224
17225 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17226
17227         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17228         (mono_get_array_new_va_signature): Ditto.
17229
17230 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17231
17232         * aot-runtime.c: Call init_plt lazily.
17233
17234         * inssel-long.brg: Fix unsigned long->int conversion.
17235
17236         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17237
17238         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17239         that most data is now in the .rss/.data section.
17240
17241 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17244
17245         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17246
17247         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17248
17249         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17250
17251         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17252         virtual call. Fixes #79010.
17253
17254         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17255         and use the result as the this argument in the real call.
17256
17257         * generics.2.cs: Add a new test for #79010.
17258         
17259 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17260
17261         * mini-x86.c: Fix a warning.
17262
17263         * aot-compiler.c: Add a bunch of statistics.
17264
17265         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17266
17267 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17268
17269         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17270
17271 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17272
17273         * 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>.
17274
17275 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17276
17277         * mini.c (mono_method_to_ir): Obtain the original method in the
17278         CIL stream and use this to perform validation.
17279
17280         Fixed: #78816
17281
17282 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17283
17284         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17285         (mono_arch_call_opcode): Ditto.
17286
17287         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17288         #78826.
17289
17290         * mini.c (mono_patch_info_dup_mp): New helper function.
17291         
17292         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17293         compilation. Fixes #78827.
17294
17295 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17296
17297         * declsec.c: Use original security informations for
17298           MONO_WRAPPER_MANAGED_TO_MANAGED.
17299
17300 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17301
17302         * mini.c: Allow Com Interop methods/classes and
17303         don't verify COM wrapper calls
17304         
17305
17306 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17307
17308         * inssel-long32.brg: Fix long->i4 checked conversion.
17309
17310         * exceptions.cs: Add a test for the above.
17311
17312 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17313
17314         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17315
17316         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17317         leaks.
17318
17319         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17320         #78775.
17321
17322 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17323
17324         * mini.c: Fix solaris/x86 exception handling.
17325
17326         * Makefile.am: Get rid of $(ICU_LIBS).
17327
17328 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17329
17330         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17331         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17332         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17333
17334         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17335
17336         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17337         this function causes a SIGSEGV.
17338
17339 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17340
17341         * mini.c: Remove unused solaris/x86 includes.
17342
17343 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17346
17347 2006-06-20  Jb Evain  <jbevain@gmail.com>
17348
17349         * cpu-g4.md: fix max length of start_handler instruction.
17350
17351 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17352         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17353
17354 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17355         * ssa.c: Fixed bug 78653 for SSA based deadce.
17356         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17357         MonoInst.flags, used in SSA based deadce.
17358         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17359         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17360
17361 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17362
17363         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17364         it can end up using non executable memory on ppc64 systems
17365         running ppc32 userspace (fix from Johannes Berg).
17366
17367 2006-06-14  Dick Porter  <dick@ximian.com>
17368
17369         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17370         4.1.1
17371
17372 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17373         * mini.c: Made so that inline is locally disabled if it would
17374         trigger a .cctor, because too many apps depend on this behavior
17375         (which seems to be also the one of the MS CLR).
17376
17377 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17378
17379         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17380         No idea why this worked before.
17381
17382         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17383         which branch to outer exception clauses since they could skip the
17384         inner finally clauses. Fixes #78633.
17385
17386         * exceptions.cs: Add a test for the above.
17387
17388         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17389         Fixes #78629.
17390
17391         * iltests.il: Add a test for the above.
17392
17393 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17394
17395         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17396         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17397
17398         * iltests.il: Add a test for the above.
17399
17400 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17401
17402         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17403         
17404         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17405         methods as instrinsics.
17406
17407 2006-06-09  Wade Berrier <wberrier@novell.com>
17408
17409         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17410         (simple-cee-ops.h ssapre-mini-ops.h)
17411
17412 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17413
17414         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17415         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17416         instruction).
17417         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17418         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17419
17420 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17421
17422         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17423
17424 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17425
17426         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17427         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17428         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17429         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17430         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17431         of opcodes, so that bug 78549 should not happen again.
17432         * ssapre.c: Updated to use the renamed files.
17433
17434 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17435
17436         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17437         in OP_ATOMIC_EXCHANGE_I4.
17438
17439 2006-06-07  Wade Berrier <wberrier@novell.com>
17440
17441         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17442         in mono_debugger_create_notification_function)
17443
17444 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17445
17446         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17447         
17448         * mini.c (type_from_stack_type): Disable some changes which do not
17449         seem to work.
17450
17451         * driver.c: Reenable opts.
17452
17453         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17454         of the evaluation stack.
17455         
17456         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17457         evaluation stack trace at entry to the bblock.
17458
17459         * mini.c (merge_stacks): New function to perform verification of stack merges.
17460         Turned off by default.
17461
17462         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17463         STACK_MP.
17464         
17465 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17466
17467         * local-propagation.c: Fixed bug 78549.
17468
17469 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17470
17471         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17472
17473 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17474
17475         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17476         tramp-arm.c, tramp-ia64.c
17477         (mono_debugger_create_notification_function): Update signature to
17478         new signature and use new protocol for creating the notification
17479         function.  
17480
17481         Should fix the build.
17482
17483 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17484
17485         * exceptions-ppc.c (mono_jit_walk_stack)
17486         (ves_icall_get_frame_info): Fix the build
17487
17488 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17489
17490         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17491
17492 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17493
17494         * il2tests.2.il: New file for generics CIL tests.  Add test for
17495         #78019.
17496         * Makefile.am: Update.
17497
17498         Fix #78019
17499         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17500         to nullable types.
17501
17502 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17503
17504         * aliasing.c: Fixed bug 78311.
17505
17506 2006-05-29  Martin Baulig  <martin@ximian.com>
17507
17508         * mini-exceptions.c (mono_find_jit_info): When computing the
17509         native offset, check whether we're actually inside the method's
17510         code; call mono_debug_print_stack_frame() to format the frame.
17511         (ves_icall_System_Exception_get_trace): Call
17512         mono_debug_print_stack_frame() to format the stack frame.
17513         (ves_icall_get_trace): Update to the new debugging API.
17514         (mono_jit_walk_stack_from_ctx): Likewise.
17515         (ves_icall_get_frame_info): Likewise.
17516
17517         * mini.c (get_method_from_ip): Use the new debugging API.
17518         (mono_print_method_from_ip): Likewise.
17519
17520         * exceptions-ppc.c
17521         (mono_jit_walk_stack): Use the new debugging API.
17522         (ves_icall_get_frame_info): Likewise.   
17523
17524 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17525
17526         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17527
17528 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17529
17530         * mini.c: Added "limitator" to inline for debugging.
17531
17532 2006-05-24  Martin Baulig  <martin@ximian.com>
17533
17534         * debug-debugger.c (mono_debugger_init): Create a private,
17535         malloc()-based code manager for the notification function and
17536         intentionally leak it on exit.  This fixes the crash-on-exit race
17537         condition.
17538
17539         * tramp-amd64.c
17540         (mono_debugger_create_notification_function): Added
17541         `MonoCodeManager *' argument.
17542
17543         * tramp-x86.c
17544         (mono_debugger_create_notification_function): Added
17545         `MonoCodeManager *' argument.
17546
17547 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17548
17549         * aliasing.c: Fixed 64 bit issue.
17550         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17551         default since all known bugs are fixed (one more time!).
17552
17553 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17554
17555         * mini.c: write barrier support.
17556
17557 2006-05-23  Martin Baulig  <martin@ximian.com>
17558
17559         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17560         check at the top of the file.
17561
17562 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17563
17564         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17565         reverting changes without reason and without changelog entries.
17566
17567 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17568
17569         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17570         to a few opcodes. Fixes #78439.
17571
17572         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17573         consistency with other archs.
17574
17575         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17576
17577 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17578
17579         * debug-debugger.c: fix the build.
17580
17581 2006-05-17  Martin Baulig  <martin@ximian.com>
17582
17583         * debug-debugger.c
17584         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17585         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17586         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17587         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17588
17589 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17590
17591         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17592
17593 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17594
17595         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17596         MONO_TYPE_GENERICINST.
17597         
17598         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17599         MONO_TYPE_GENERICINST.
17600
17601 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17602
17603         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17604         #78325.
17605
17606 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17609         mempool.
17610         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17611
17612 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17613
17614         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17615         mono_trace_cleanup ().
17616
17617         * iltests.il: Fix problem with the newly added test.
17618
17619         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17620         due to register constraints, free up the previous hreg. Fixes #78314.
17621
17622         * iltests.il: Add new test for #78314.  
17623
17624         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17625         Interlocked.Add. Fixes #78312.
17626
17627         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17628         
17629 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17630
17631         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17632
17633 2006-05-05  Martin Baulig  <martin@ximian.com>
17634
17635         * debug-mini.c (mono_debug_open_block): New method.
17636
17637         * mini-amd64.c
17638         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17639         the beginning of each basic block.
17640
17641         * mini-x86.c
17642         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17643         the beginning of each basic block.
17644
17645 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17646
17647         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17648         default until I understand why they break the build on amd64.
17649
17650 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17651
17652         * mini.c (mini_cleanup): Call mono_cleanup ().
17653
17654         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17655         errors.
17656
17657 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17658
17659         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17660         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17661         default since all known bugs are fixed, and I cannot reproduce bug
17662         77944... I'm asking Matt Hargett to test again after this commit.
17663
17664 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17665
17666         * mini-codegen.c: Fixed typo that thrashed inline.
17667
17668 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17669
17670         * dominators.c (compute_dominators): Avoid using a worklist since
17671         it is not correct in some cases. Instead, iterate over all bblocks as
17672         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17673
17674 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17675
17676         * mini.c (mono_jit_compile_method_inner): Use
17677         mono_prepare_exception_from_error that resets the value
17678         internally.
17679
17680 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17681
17682         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17683         
17684 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17685
17686         * aliasing.c: Fixed bug 78210.
17687
17688 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17689
17690         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17691         default until all their problems (or the ones they trigger) are fixed.
17692
17693 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17694
17695         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17696         
17697         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17698         as loaded only after resolving patches since that could invoke the same method.
17699
17700         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17701
17702         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17703         functions.
17704
17705         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17706         AOT loader.
17707
17708         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17709         stack.
17710
17711         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17712         made from AOT code through the PLT table.
17713
17714         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17715         holding the plt offset when a call is made to the aot plt trampoline.
17716         
17717 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17718
17719         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17720         amd64 AOT support.
17721
17722         * Makefile.am (common_sources): Fix build breakage.
17723
17724         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17725         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17726         intra-assembly calls if possible.
17727         
17728         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17729
17730         * mini-trampolines.c: Handle PLT entries.
17731
17732         * mini.c: Avoid creating a GOT var for calls.
17733
17734         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17735         from mscorlib code.
17736
17737         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17738         from mscorlib code.
17739
17740         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17741         AOT code.       
17742
17743         * mini.h: Bump AOT file format version.
17744         
17745         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17746         covers more cases.
17747
17748 2006-04-25  Martin Baulig  <martin@ximian.com>
17749
17750         * driver.c: Disable copyprop, consprop and inline when running
17751         inside the debugger.
17752
17753 2006-04-25  Martin Baulig  <martin@ximian.com>
17754
17755         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17756         with `get_current_thread' and added `detach'.
17757         (MonoDebuggerMetadataInfo): Added `thread_size',
17758         `thread_tid_offset', `thread_stack_ptr_offset' and
17759         `thread_end_stack_offset'.
17760
17761 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17762
17763         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17764         aot-runtime.c.
17765
17766         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17767         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17768
17769         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17770
17771         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17772
17773         * aot.c: Add support for ADJUSTED_IID.  
17774
17775 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17776
17777         * aot.c (emit_method_order): Don't align method_order_end.
17778
17779         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17780         the interface ID changes.
17781
17782 2006-04-21  Dick Porter  <dick@ximian.com>
17783
17784         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17785         cleaning up a thread.  Fixes the new part of bug 77470.
17786
17787 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17788
17789         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17790         to managed wrapper.
17791                      
17792 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17793
17794         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17795         
17796         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17797         SIGSEGV. Fixes #78072.
17798
17799         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17800         unregister our SIGABRT handler.
17801
17802 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17803
17804         * mini.c: Disabled inline where it can alter the call stack in a
17805         way visible from managed code.
17806         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17807         default.
17808
17809 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17810
17811         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17812         on other platforms. Fixes #78089.
17813
17814 2006-04-13  Martin Baulig  <martin@ximian.com>
17815
17816         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17817         determine whether we're inside the debugger.
17818
17819         * debug-debugger.h
17820         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17821
17822 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17823
17824         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17825         handler clauses. Fixes #78024.
17826
17827         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17828         in the CALL_MEMBASE opcodes. Fixes #78088.
17829         (mono_arch_get_vcall_slot_addr): Ditto.
17830
17831 2006-04-10  Martin Baulig  <martin@ximian.com>
17832
17833         * debug-debugger.c: The thread handling code has now been moved
17834         into ../metadata/threads.c.
17835
17836 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17837
17838         * driver.c (mono_main): Fix --with-gc=none build.
17839
17840         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17841         (mono_spillvar_offset_float): Ditto.
17842         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17843         hreg, not when its !global, since on ia64, there is a third category: stacked
17844         registers.      
17845
17846 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17847
17848         * mini.c: set MonoInst->klass for load field address and a few other
17849         places.
17850
17851 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17852
17853         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17854
17855 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17856
17857         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17858         the branch opt changes.
17859
17860 2006-04-06  Dick Porter  <dick@ximian.com>
17861
17862         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17863         
17864         * wapihandles.c (mini_wapi_seminfo): 
17865         * driver.c (mono_main): Add semaphore info option
17866
17867 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17868
17869         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17870         branch optimization changes. Fixes #78009.
17871
17872 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17873
17874         * mini.c: ignore accessibility of methods in managed->native wrappers.
17875
17876 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17879         
17880         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17881
17882 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17883
17884         * mini.c: Modify the branch optimizations to preserve the invariant that
17885         the entries inside the in_bb and out_bb arrays are unique.
17886         (mono_unlink_bblock): Avoid creation of new arrays.
17887
17888 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17889
17890         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17891         change (#77992).
17892
17893 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17894
17895         * mini.c (optimize_branches): Remove the "optimizations" in
17896         the cbranch1/cbranch2 -> branch cases which were causing several
17897         problems in the past. Fixes #77986.
17898
17899 2006-03-31  Chris Toshok  <toshok@ximian.com>
17900
17901         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17902         default optimizations :(
17903
17904 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17905
17906         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17907         branch.
17908
17909 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17910
17911         * local-propagation.c: Added comments to structs and removed
17912         "Mono" prefixes from local tree mover types.
17913
17914 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17915
17916         * Makefile.am (arch_sources): Define this for each architecture so 
17917         libmono_la_SOURCES is defined in one place.
17918
17919 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17920
17921         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17922         from handles/.
17923
17924 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17925
17926         * driver.c: print the GC name supplied by configure.
17927
17928 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17929
17930         * local-propagation.c: Added tree mover, and moved here all the
17931         local propagation code from mini.c
17932         * mini.c: Added support for treeprop, and moved all the local
17933         propagation code to local-propagation.c
17934         * mini.h: Added support for treeprop
17935         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17936         treeprop, inline and deadce by default
17937         * Makefile.am: Added local-propagation.c
17938
17939 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17940
17941         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17942
17943 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17944
17945         * debug-debugger.c: make it compile without the Boehm GC.
17946
17947 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17948
17949         * mini.c: fixed issue with mismatch when an icall is registered
17950         with multiple names but same address.
17951
17952 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17953
17954         * declsec.c, mini-exceptions.c: use write barrier to set reference
17955         fields of managed objects.
17956
17957 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17958
17959         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17960         (can_access_internals): Fix a warning.
17961
17962         * mini.c (print_method_from_ip): Rename this to 
17963         mono_print_method_from_ip so it gets exported.
17964
17965         * trace.c: Deal with strings inside StringBuilder's containing garbage
17966         and fix memory leaks. Fixes #77848.
17967
17968 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17969
17970         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17971         fixes #77787.
17972
17973 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17974         
17975         * mini-s390.c: Remove OP_X86_TEST_NULL.
17976
17977 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * mini.c: use the correct GetHashCode() for the moving collector.
17980
17981 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17982
17983         * liveness.c: Regalloc spill cost tuning.
17984
17985 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17986         
17987         * mini-s390x.h: Correct S390_LONG macro.
17988
17989         * mini-s390x.c: Cleanup unused code.
17990
17991 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17992
17993         * jit-icalls.h: New file.
17994
17995         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17996         icalls and include that instead of including jit-icalls.c.
17997
17998         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17999         OP_X86 opcodes.
18000
18001 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
18002
18003         * mini.c: when checking for member accessibility, also check for
18004         friend assemblies and for explicit interface implementations.
18005
18006 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
18007
18008         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
18009
18010         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
18011
18012         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18013         common cases are done first.    
18014
18015         * mini-ops.h: Only define platform specific opcodes on the given platform.
18016
18017         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
18018         branch.
18019         
18020 2006-03-14  Martin Baulig  <martin@ximian.com>
18021
18022         Revert Paolo's change from r57348:
18023
18024         * mini.h: don't use gboolean for bitfields.
18025         * mini.c: verifier changes for fields and methods accessibility.
18026
18027 2006-03-13  Neale Ferguson <neale@sinenomine.net>
18028
18029         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
18030
18031         * mini-s390x.c: Fix conv_r_un.
18032
18033         * cpu-s390, cpu-s390x.md: Fix lengths.
18034
18035 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18036
18037         * mini.c: nested types have access to all the nesting
18038         levels, not just the enclosing types.
18039
18040 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * mini.c: added a few more verification checks.
18043
18044 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
18045
18046         * liveness.c: Merge optimizations from the linear-il branch.
18047
18048 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18049
18050         * mini-ia64.c (emit_call): Add a comment.
18051
18052         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
18053
18054         * tramp-ia64.c: Fix some warnings.
18055
18056 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18057
18058         * mini.h: don't use gboolean for bitfields.
18059         * mini.c: verifier changes for fields and methods accessibility.
18060
18061 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
18062
18063         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
18064         lazy icall wrapper changes.
18065
18066         * dominators.c: Replace all the dominator algorithms with faster
18067         ones from the linear-il branch.
18068
18069         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
18070         the mempool.
18071
18072         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
18073         common cases are done first.
18074
18075         * mini-amd64.c: Fix some warnings.
18076
18077         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
18078         from the mempool.
18079
18080         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
18081         added code.
18082
18083         * mini.h: Add a missing prototype.
18084
18085 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
18086
18087         * mini.c: Compile icall wrappers lazily.
18088
18089         * mini-codegen.c: Use printf instead of g_print since its much faster.
18090
18091         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
18092         function.
18093
18094         * mini.c (optimize_branches): Cache the negative result from 
18095         remove_block_if_useless ().
18096
18097         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
18098         Also fix some bblock linking issues.
18099
18100         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
18101         assembly files.
18102
18103         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
18104
18105         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
18106         accessed fields first, for better cache behavior.
18107         
18108 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18109
18110         * mini.c: speedup IList<T> array accesses.
18111
18112 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
18113
18114         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
18115         inline_costs counter. Fixes #77190.
18116
18117 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
18118
18119         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
18120         trace messages. Fixes #77706.
18121
18122 2006-03-04  Martin Baulig  <martin@ximian.com>
18123
18124         * tramp-amd64.c, tramp-x86.c
18125         (mono_debugger_create_notification_function): Use
18126         mono_global_codeman_reserve() to allocate a buffer at runtime and
18127         return it.
18128
18129         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
18130
18131         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
18132         notification function at runtime and then call `initialize' in the
18133         `MONO_DEBUGGER__debugger_info' vtable.
18134
18135 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
18136
18137         * iltests.il: Fix a visibility problem.
18138
18139 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18140
18141         * driver.c, mini.c: add hooks for the counters API.
18142
18143 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
18144
18145         * driver.c: show disabled options.
18146
18147 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18148
18149         * linear-scan.c: always use cost-driven selection.
18150
18151 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18152
18153         * jit-icalls.c (helper_compile_generic_method): Revert change from
18154         2006-02-24.
18155
18156 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
18157
18158         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
18159
18160 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18161
18162         * inssel.brg: style fixes, mostly to force the updated monoburg
18163         to run for people using svn.
18164
18165 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18166
18167         * mini.c: match monoburg changes.
18168
18169 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18170
18171         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
18172         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
18173         declaration in the header file.
18174
18175 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18176
18177         * helpers.c: reduce relocations and mem usage.
18178
18179 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18180
18181         * mini.h, mini-codegen.c: disable logging features if
18182         requested by configure.
18183
18184 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
18185
18186         * mini.c: tiny verifier changes.
18187
18188 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18189
18190         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18191         cpu-pentium.md: stack alignment changes for osx/x86,
18192         partially from Geoff Norton <gnorton@customerdna.com>.
18193
18194 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18195
18196         * jit-icalls.c (helper_compile_generic_method): Update to changes
18197         in metadata/class.c.
18198
18199 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18200         
18201         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18202         
18203         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18204         interface calls with large offsets.
18205
18206 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18207
18208         * jit-icalls.c (helper_compile_generic_method): Document the
18209         special-case we depend on so that we can inflate the method twice
18210         with the same context with no bad side-effects.
18211
18212 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18213
18214         * mini-x86.c, mini-amd64.c: fix for case when xen support
18215         is disabled.
18216
18217 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18218
18219         * mini-x86.c, mini-amd64.c: generate code to access tls items
18220         in a faster way for Xen systems.
18221
18222 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18223
18224         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18225         updates and compilation fixes for the OSX/x86 port, mostly from
18226         Geoff Norton <gnorton@customerdna.com>.
18227
18228 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18229
18230         * inssel.brg: faster interface call implementation
18231         to sync with the interface_offsets MonoVTable changes.
18232
18233 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18234
18235         * mini.c: more verification checks.
18236
18237 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * mini.c: added a few more verification checks.
18240
18241 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18242
18243         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18244         facility on the processor and use it if available.
18245
18246 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18247
18248         * driver.c, aot.c, mini.c: throw exception if the IL code is
18249         invalid or unverifiable.
18250
18251 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18252
18253         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18254         m.StructField.
18255
18256 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18257
18258         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18259
18260 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18261
18262         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18263         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18264         handling of instantiated generic valuetypes.
18265
18266 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18267
18268         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18269         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18270         instead.
18271
18272         * generics.2.cs: Revert the nullable reftypes tests.
18273
18274 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18275
18276         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18277         using __builtin_frame_address (1) as it doesn't work in the presence
18278         of optimizations. Hopefully fixes #77273.
18279
18280         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18281         -> generics.cs change as it doesn't work with some automake versions.
18282
18283 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18284
18285         * mini.c: handle systems that sue a different way to
18286         retrieve the stack address of the current thread.
18287
18288 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18289
18290         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18291         it specially in the makefile.
18292
18293         * generics.2.cs: Add tests for nullable reference types.
18294
18295 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18296
18297         * mini.c: always handle the case when mono_jit_init()
18298         is called in a thread different from the main thread,
18299         confusing libgc (bug #77309).
18300
18301 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18302
18303         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18304
18305 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18306
18307         * mini.c: change optimize_branches () to use a single loop
18308         and introduce a new optimization to simplify some range checks.
18309
18310 2006-02-03  Martin Baulig  <martin@ximian.com>
18311
18312         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18313         and merged with debugger_thread_manager_add_thread().
18314         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18315         inform the debugger about the main thread.
18316
18317 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18318
18319         * basic.cs: Add test for div.un/rem.un constant folding.
18320
18321 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18322
18323         * cpu-s390x.md: correct int_xor_imm length
18324
18325 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18326
18327         * generics.2.cs: New test for #77442.
18328
18329         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18330         #77442.
18331
18332 2006-02-02  Martin Baulig  <martin@ximian.com>
18333
18334         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18335         <mono/metadata/mono-debug-debugger.h>   
18336
18337         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18338
18339 2006-02-02  Martin Baulig  <martin@ximian.com>
18340
18341         * debug-debugger.h: New header file for debug-debugger.c.
18342
18343         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18344         function is a separate thread anymore; add support for attaching.
18345
18346 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18347
18348         * tramp-x86.c: Fix a warning.
18349
18350 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18351
18352         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18353         on very large methods.
18354
18355         * aot.c (load_patch_info): Fix a warning.
18356
18357 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18358
18359         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18360         mini-ops.h: alu membase optimizations.
18361
18362 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18363
18364         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18365         to speedup StringBuilder.
18366
18367 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18368
18369         * dominators.c (mono_compute_natural_loops): Fix detection of
18370         loop body start blocks.
18371
18372         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18373
18374 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18375
18376         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18377         #75145.
18378
18379 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18380
18381         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18382
18383 2006-01-25  Martin Baulig  <martin@ximian.com>
18384
18385         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18386         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18387         started to cleanup this file a little bit.
18388
18389 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18390
18391         * mini.c: optimize a codepath frequently happening in generics code.
18392
18393 2006-01-23  Martin Baulig  <martin@ximian.com>
18394
18395         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18396
18397         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18398         functions directly.
18399
18400         * driver.c: debug-debugger.c is only available if
18401         `MONO_DEBUGGER_SUPPORTED' is defined.   
18402
18403 2006-01-23  Martin Baulig  <martin@ximian.com>
18404
18405         * debug-debugger.c: Only enable this on platforms where the Mono
18406         Debugger is working (x86 and x86_64).
18407
18408 2006-01-21  Martin Baulig  <martin@ximian.com>
18409
18410         The Mono Debugger is now using the normal `mono' instead of the
18411         `mono-debugger-mini-wrapper' when executing managed code.
18412
18413         * debug-debugger.c: New file; previously known as
18414         debugger/wrapper/wrapper.c.
18415
18416         * debug-mini.c (mono_init_debugger): Removed.
18417
18418         * driver.c (mono_main): Added new `--inside-mdb' command line
18419         argument which is used when running inside the debugger.
18420
18421 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * liveness.c (mono_analyze_liveness): Remove some unused data
18424         structures.
18425
18426 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18427
18428         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18429
18430 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18431
18432         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18433         depends on implementation details of monobitset.
18434
18435         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18436         Fixes #77271.
18437
18438 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18439
18440         * liveness.c: Update after monobitset changes.
18441
18442 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18443
18444         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18445
18446 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18447
18448         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18449
18450         * mini-s390x.c: Remove warning messages.
18451
18452 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18453
18454         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18455
18456 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * generics.2.cs: Add ldelem/stelem_any test.
18459
18460 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18461
18462         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18463
18464 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18465
18466         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18467         
18468 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18469
18470         * generics.2.cs: Reenable vtype tests.
18471
18472         * inssel-x86.brg: Remove an icorrect valuetype rule.
18473
18474 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18475
18476         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18477         initial support for OP_ABS.
18478
18479 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18480
18481         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18482
18483 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18484
18485         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18486         conversion and implement LADD/LSUB.
18487
18488         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18489         architectures.
18490
18491 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18492
18493         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18494
18495         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18496         architectures.
18497
18498 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18499
18500         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18501         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18502         (stack walk problem).
18503
18504 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18505
18506         * aot.c (mono_aot_load_method): Fix a warning.
18507
18508 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18509
18510         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18511
18512 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18513
18514         * iltests.il: Add test for #77148.
18515
18516         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18517         #77148.
18518
18519 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18520
18521         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18522
18523 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18524
18525         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18526         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18527
18528         * basic-long.cs: Add lconv-to-r4/r8 tests.
18529
18530 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18533
18534         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18535         here as on other archs.
18536
18537 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18538
18539         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18540
18541 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18542
18543         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18544         
18545         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18546
18547         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18548         instrument_prolog; Add memory_barrier instruction.
18549
18550 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18551
18552         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18553
18554 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18555
18556         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18557
18558         * aliasing.c inssel.brg: Fix warnings.
18559
18560         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18561         could skip initialization of some parts of memory.
18562
18563         * mini.c mini-ia64.c: Fix warnings.
18564
18565         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18566
18567 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18568
18569         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18570         a crash seen on sparc.
18571
18572         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18573         
18574         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18575
18576 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18577
18578         * mini-ops.h: Add s390_backchain instruction
18579
18580         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18581
18582         * cpu-s390.md: Add s390_backchain instruction
18583
18584         * mini-s390.c: Significant ABI changes
18585
18586         * mini-s390.h: Cater for zero length structures
18587
18588 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18589
18590         * mini-s390.c: ABI fixes
18591
18592         * inssel-s390.brg: Remove debug statements
18593
18594         * cpu-s390.md: Fix length of ATOMIC_xx operations
18595
18596 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18597
18598         * basic-float.cs: Add float<->long conversion tests.
18599
18600 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18601
18602         * mini-s390.c: Fix LOCALLOC processing.
18603
18604         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18605
18606 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18607
18608         * iltests.il: Add tests for some opcodes not covered by the other
18609         tests.
18610
18611 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18612
18613         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18614         register loading for Tail processing; Correct trace output.
18615
18616         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18617
18618         * cpu-s390.md: Correct size of jmp instruction. 
18619
18620 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18621
18622         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18623
18624 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18625
18626         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18627           Bring s390 up to current level.
18628
18629 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18630
18631         * generics.2.cs: Disable the newly added tests as they do not work yet.
18632         
18633         * generics.2.cs: Add valuetype tests.
18634
18635 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18636
18637         * basic-long.cs: Add i4->u8 test.
18638
18639         * objects.cs: Add tests for JIT intrinsic.
18640
18641         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18642         optimizations lost by a mistake.
18643
18644 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18645
18646         * basic-long.cs: Remove a test moved to objects.cs.
18647
18648         * arrays.cs: Add more array tests.
18649
18650 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18651
18652         * arrays.cs: Add new tests for multi-dimensional arrays.
18653
18654 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18655
18656         * Makefile.am (test_sources2): Add generics.2.cs.
18657         (EXTRA_DIST): Add test_sources2.
18658
18659 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18660
18661         Support for boxing and unboxing nullable types as well as the
18662         isinst operation on nullables, per the CLI ammendment.
18663
18664         * inssel.brg (CEE_ISINST): Special case for nullable
18665
18666         * mini.c (handle_unbox_nullable): new method
18667         (handle_box): Special case for nullable types
18668         (mono_method_to_ir): Call handle_unbox_nullable in correct
18669         places.
18670
18671         * generics.2.cs: New test suite
18672
18673         * Makefile.am: Support for regression tests with generics.
18674
18675 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18678         allocated to registers. Fixes #76800.
18679
18680 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18681
18682         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18683
18684 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18685
18686         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18687         of platforms.
18688
18689 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18690
18691         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18692         objects.cs.
18693
18694         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18695         
18696         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18697 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18698
18699         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18700         single precision before storing to a single precision location.
18701
18702 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18703
18704         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18705
18706 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18707
18708         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18709         correct files.
18710
18711         * basic.cs: Remove test_0_byte_compares test which was moved to
18712         objects.cs a long time ago.
18713
18714 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18715
18716         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18717
18718 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18721         handlers are called.
18722
18723         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18724         throwing code.
18725
18726          * mini-ia64.c: Add support for the throw->branch exception 
18727         optimization.   
18728
18729         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18730
18731 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18732
18733         * mini.c: Enabled "fastpath" deadce :-)
18734         
18735 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18736
18737         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18738         alias analysis pass to support it.
18739         * mini.h: Likewise.
18740         * ssa.c: Likewise.
18741         * liveness.c: Likewise (liveness computation can use aliasing
18742         information to be more accurate).
18743         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18744         moreover made so that "--compile-all" uses the given optimization
18745         flags and not the default ones.
18746         * aliasing.c: Alias analysis (new file).
18747         * aliasing.h: Likewise.
18748         * Makefile.am: added "aliasing.c" and "aliasing.h".
18749         
18750 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18751
18752         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18753         OP_L opcodes.
18754
18755 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18756
18757         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18758         fp >= end_of_stack exit condition, as it is not needed, and it might
18759         become true for fp eliminated frames.
18760
18761 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18762
18763         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18764         coded offsets.
18765
18766 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18767
18768         * mini-arm.c: fixed alignment of doubles/longs to match
18769         the C ABI (bug #76635).
18770
18771 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18772
18773         * aot.c: fix compilation with --enable-minimal=aot.
18774
18775 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18776
18777         * mini-arm.c: fixed compatibility with the new
18778         floating point emulator package for compares.
18779
18780 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18781
18782         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18783
18784 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * mini-exceptions.c (print_stack_frame): Output to stderr.
18787         (mono_handle_native_sigsegv): Ditto.
18788
18789 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18790
18791         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18792         OP_LCONV_TO_OVF_I implementation.
18793
18794         * mini-amd64.c: Add support for the throw->branch exception 
18795         optimization.
18796
18797         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18798         when the catch clause catches a more general exception, i.e. Object.
18799
18800 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18801
18802         * cpu-ia64.md: Remove unused opcodes.
18803
18804         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18805         specific defines for architectures defining USE_SIGACTION.
18806
18807         * mini-ia64.c: Fix some warnings.
18808
18809         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18810         version seemed to skip a frame.
18811
18812 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18815         only calls which are made to native code use this flag.
18816
18817 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18820         varargs methods as well.
18821         
18822         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18823         which have save_lmf set. Reorganize methods prologs a bit.
18824
18825         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18826         debugger to the proper place.
18827
18828 2005-10-29  Martin Baulig  <martin@ximian.com>
18829
18830         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18831         when running inside the debugger until the debugger has support
18832         for it.
18833
18834 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18835
18836         * mini.h: Fix a warning.
18837
18838 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18839
18840         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18841         we expose publicly, this returns the string.
18842
18843 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18844
18845         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18846         with fp elimination.
18847
18848 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18849
18850         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18851         native stacktrace using the glibc 'backtrace' function if available.
18852
18853 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18854
18855         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18856
18857         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18858         handle SIGSEGVs received while in native code.
18859
18860         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18861         code, call mono_handle_native_sigsegv which will abort the runtime
18862         after printing some diagnostics, instead of converting it into a
18863         confusing NullReferenceException.
18864
18865 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18866
18867         * cpu-pentium.md: Remove unused opcodes.
18868
18869 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18870
18871         * mini-amd64.h (MonoLMF): Add rsp field.
18872
18873         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18874         the lmf too.
18875
18876 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18877
18878         * mini-codegen.c (get_register_spilling): Fix some warnings.
18879
18880 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18883         elimination during exception handling. Enable fp elimination by
18884         default.
18885
18886         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18887         elimination.
18888
18889 2005-10-16  Martin Baulig  <martin@ximian.com>
18890
18891         * mini-exceptions.c
18892         (mono_debugger_run_finally): New public method for the debugger.
18893
18894 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18895
18896         * debug-mini.c (mono_debug_init_method): Fix warning.
18897
18898         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18899         the 'exname' parameter const to fix some warnings.
18900
18901 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18904         introduced by the previous patch.
18905
18906 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18907
18908         * basic-float.cs: Add test for precision of float arithmetic.
18909
18910         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18911         when loading/storing single values from/to memory.
18912
18913         * mini.c (mono_jit_compile_method_with_opt): Create the function
18914         pointers in the correct domain.
18915
18916 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18919         introduced by previous patch.
18920         
18921         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18922         when out_filter_idx is NULL.
18923
18924         * mini-exceptions.c: Don't run filter clauses twice during exception
18925         handling. Fixes #75755.
18926
18927 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18928
18929         * aot.c: Add support for ldflda wrappers.
18930
18931         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18932         #75902.
18933
18934 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18935
18936         * mini.c, mini.h: do not consider exception handlers blocks when
18937         setting up interface variables.
18938
18939 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18942
18943 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18944
18945         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18946         causes a regression.
18947
18948         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18949
18950 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18951
18952         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18953         of the OP_P definitions.
18954
18955         * TODO: Add a proposal for dealing with the CEE/OP mess.
18956
18957         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18958         optimizations from the x86 port.
18959
18960         * cpu-amd64.md: Ditto.
18961
18962         * basic.cs basic-long.cs: Add tests.
18963
18964 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18965
18966         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18967         Patrik Torstensson's implementation of my exception-handling
18968         optimization idea, when the exception object is not used
18969         (bug #62150).
18970
18971 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18972
18973         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18974         of the mul_imm optimizations from the old jit.
18975
18976 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18977
18978         * mini.c, liveness.c: patch by Patrik Torstensson and
18979         Zoltan Varga to improve performance in methods with
18980         exception clauses.
18981
18982 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18983
18984         * driver.c: Remove 'Globalization' entry from --version.
18985
18986 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18987
18988         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18989         there is a profiler interested in JIT events.
18990
18991         * aot.c: Load profile files produced by the AOT profiling module, and
18992         reorder methods based on the profiling info. Add a 'method_order' table
18993         to the AOT file to make mono_aot_find_jit_info work with the reordered
18994         methods.
18995
18996         * mini.h: Bump AOT file version info.
18997
18998 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18999
19000         * mini-arm.h: work around what looks like a gcc bug when optimizations
19001         are enabled.
19002
19003 2005-09-28  Raja R Harinath  <rharinath@novell.com>
19004
19005         * Makefile.am (AM_CFLAGS): Don't use += to append inside
19006         conditionals.  Use ...
19007         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
19008
19009 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
19012         to determine the amount of memory to copy when passing valuetypes.
19013
19014         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
19015         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
19016
19017 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
19018
19019         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
19020         information about aot.
19021
19022 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19023
19024         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19025         macros. This will allow a deadlock debugger to easily be plugged
19026         in.
19027
19028 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
19029
19030         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
19031
19032 2005-09-27  Raja R Harinath  <rharinath@novell.com>
19033
19034         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
19035         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
19036         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
19037         ($(arch_built)) [CROSS_COMPILING]: Error out.
19038
19039 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19040
19041         * aot.c: Add support for the no_special_static flag for classes.
19042
19043 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19044
19045         * Reapply reverted patches.
19046
19047         * *: Revert r50174 as well.
19048
19049         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
19050
19051 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
19054
19055 2005-09-23  Miguel de Icaza  <miguel@novell.com>
19056
19057         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
19058         part of the SIG_HANDLER_SIGNATURE.  
19059
19060 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19061
19062         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
19063         statistics.
19064
19065         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
19066         introduced by previous patch.
19067
19068 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
19069
19070         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
19071         saved registers too.
19072
19073         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
19074         upon the information returned by get_call_info ().
19075         
19076         * mini-x86.c (add_float): Fix stack size calculation.
19077         (mono_arch_call_opcode): Rewrite this so it works based up the
19078         information returned by get_call_info ().
19079         (mono_arch_get_this_vret_args): Ditto.
19080
19081 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
19084         in cinfo to determine the registers which need to be used.
19085
19086 2005-09-20  Miguel de Icaza  <miguel@novell.com>
19087
19088         * driver.c (mono_main): Add --server and --desktop flags. 
19089
19090 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
19091
19092         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
19093         registers as global registers.
19094
19095         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
19096         longer needed with the new register allocator.
19097
19098         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
19099
19100         * cpu-ia64.md: Remove unused opcodes.
19101         
19102         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
19103         
19104 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
19105
19106         * cpu-amd64.md: Remove unused opcodes.
19107
19108         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
19109         needed with the new register allocator.
19110
19111         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
19112         reg-reg moves.
19113
19114 2005-09-16  Raja R Harinath  <rharinath@novell.com>
19115
19116         * Makefile.am (check-local): Don't invoke semdel-wrapper.
19117
19118 2005-09-16  Martin Baulig  <martin@ximian.com>
19119
19120         * exceptions-amd64.c
19121         (throw_exception): Don't call mono_debugger_throw_exception() if
19122         we're a rethrow - see the FIXME in the code.
19123
19124 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
19125
19126         * mini.c (mono_init_exceptions): This only works on some architectures.
19127         
19128 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19129
19130         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
19131         on ia64.
19132
19133         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
19134
19135         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
19136         now in mini-exceptions.c.
19137
19138 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
19139
19140         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
19141         now in mini-exceptions.c.
19142
19143 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
19144
19145         * exceptions-x86.c: Applied patch from Patrik Torstensson 
19146         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
19147
19148         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
19149         code into mini-exceptions.c. Add some assertions to it.
19150
19151 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19152
19153         * aot.c (emit_section_change): Applied patch from "The Software Team" 
19154         (<software@solmersa.com>). Fix as errors on windows.
19155
19156 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19157
19158         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
19159         method info into the LMF.
19160
19161 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19162         
19163         * mini-ia64.c: Add proper unwind info for method epilogs.
19164
19165         * exceptions-ia64.c: Add some code to help debugging.
19166         
19167         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
19168
19169         * mini-exceptions.c: Fix warning.
19170
19171 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * mini.c: Really fix build.
19174
19175         * mini-x86.c mini-amd64.c: Fix build.
19176
19177 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19178
19179         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
19180
19181         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
19182         some Interlocked methods as intrinsics.
19183
19184         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
19185         for Thread methods as well.
19186
19187         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19188
19189         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19190
19191         * mini-ia64.c mini-x86.c mini-amd64.c 
19192         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19193         OP_MEMORY_BARRIER.
19194         
19195         * mini.c (mono_init_exceptions): Fix build breakage.
19196
19197 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19198
19199         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19200         of instructions. Use the new ia64_unw_op macros for emitting unwind
19201         info.
19202
19203         * mini.c (mono_init_exceptions): Initialize exception handling
19204         related trampolines at startup.
19205
19206 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19207
19208         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19209
19210 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19211
19212         * mini.c: Handle type loading errors gracefully during compilation and
19213         throw the appropriate exception.
19214
19215 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19216
19217         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19218         for the mono binary.
19219
19220 2005-09-09  Martin Baulig  <martin@ximian.com>
19221
19222         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19223         the release.
19224
19225 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19226
19227         * mini-arm.h: use emulation for conv.r.un for the release.
19228
19229 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19230
19231         * mini-arm.c, objects.cs: more fixes and tests for them.
19232
19233 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19234
19235         * mini-arm.c: align structures to at least 4 bytes to be able
19236         to keep our current optimized memcpy.
19237
19238 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19239
19240         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19241
19242 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19243
19244         * mini.c: ignore SIGPIPE.
19245
19246 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19247
19248         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19249
19250         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19251
19252 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19253
19254         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19255
19256 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19257
19258         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19259         exception handling support.
19260         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19261         patch by Brian Koropoff <briank@marakicorp.com>).
19262
19263 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19264
19265         * mini.c: revert another 'optimization' which breaks when
19266         items on the eval stack need to be saved at a basic block end
19267         (bug #75940).
19268
19269 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19270
19271         * jit-icalls.c: for arrays, ensure we always provide
19272         lower bounds.
19273
19274 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19275
19276         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19277         
19278         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19279
19280 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19281
19282         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19283         arguments in their original register.
19284
19285 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19286
19287         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19288         memset/memcpy.
19289
19290         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19291         when ssapre is enabled.
19292
19293         * inssel-long.brg: Fix bug in previous patch.
19294
19295         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19296         multiplication by a constant.
19297
19298 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19299
19300         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19301         icc.
19302
19303         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19304         saving registers.
19305
19306 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19307
19308         * inssel-arm.brg: apply changes tested by Brian Koropoff
19309         <briank@marakicorp.com>.
19310
19311 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19312
19313         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19314         
19315 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19316
19317         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19318         to the same register if dreg is just a base register.
19319         (print_ins): Improve printing of membase opcodes.
19320
19321         * inssel-x86.brg: Add optimized ldind(reg) rules.
19322
19323         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19324
19325 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19326
19327         * mini.c: when running under valgrind, set the stack bottom for
19328         the GC at the actual approximate stack for the app (fixes running
19329         mono with valgrind).
19330
19331 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19332
19333         * mini.c: do no break at the first valuetype to init found
19334         (fixes bug #75791).
19335
19336 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19337
19338         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19339
19340 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19341
19342         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19343
19344 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19345
19346         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19347
19348 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19351
19352         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19353         code.
19354
19355         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19356         code.
19357
19358         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19359         methods.
19360
19361 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19362
19363         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19364
19365 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19366
19367         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19368         in the tail recursion optimization.
19369
19370         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19371         debug info into the assembly file.
19372
19373         * iltests.il: Add test for filter regions.
19374
19375         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19376         initial stack of filter regions. Fixes #75755.
19377
19378 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19379
19380         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19381         stack requirements.
19382
19383 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19386         the check for an already compiled method on non-ia64 platforms.
19387         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19388         proper domain.
19389
19390         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19391
19392         * inssel-x86.brg: Add some optimized call rules.
19393
19394 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19397         method here.
19398
19399         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19400         mono_arch_patch_delegate_trampoline.
19401
19402         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19403
19404         * mini-trampolines.c: Fix build.
19405
19406         * mini-amd64.h: Add delegate trampolines.
19407
19408         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19409
19410         * inssel-amd64.brg: Add optimized call rules.
19411         
19412         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19413
19414         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19415
19416 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19417
19418         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19419         change.
19420
19421         * mini-ia64.c: Remove LMF fixmes.
19422
19423         * mini-ia64.h: Remove most fields from LMF.
19424
19425         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19426
19427         * mini-trampolines.c: Add support for IA64 function descriptors.
19428
19429         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19430         for IA64 function descriptors.
19431
19432 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19433
19434         * tramp-arm.c: patch the vtable for virtual calls. Added
19435         support code to register/unregister the LMF.
19436         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19437         more LMF work.
19438
19439 2005-08-19  Dick Porter  <dick@ximian.com>
19440
19441         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19442         bit value if needed.
19443
19444 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19445
19446         * mini.c (mini_get_method): Move handling of wrapper data here.
19447
19448         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19449
19450         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19451         virtual.
19452
19453         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19454         bblock->code does not remain empty.
19455
19456 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19457
19458         * arrays.cs: Add regression test for #75832.
19459
19460         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19461         rules. Fixes #75832.
19462
19463         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19464         instruction scheduling.
19465
19466 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19467
19468         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19469
19470 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19471
19472         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19473
19474         * mini-codegen.c: Fix VC build.
19475
19476         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19477
19478 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19479
19480         * mini.h: fix signature for mono_register_opcode_emulation.
19481
19482 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19483
19484         * mini.c: Get rid of most of the helper_sig_... constants using
19485         mono_create_icall_signature ().
19486
19487 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19488
19489         * jit-icalls.c (helper_ldstr): New helper function.
19490
19491         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19492
19493         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19494         throw, load the string using a helper call instead of creating a string object.
19495
19496         * aot.c: Update after LDSTR changes.
19497
19498         * mini.h: Bump AOT file version.
19499         
19500         * aot.c: Save class size info into the AOT file. Print more statistics during
19501         compilation.
19502
19503         * mini.h: Bump AOT file version.
19504
19505         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19506         ordering of disasm cases. Fixes #74957.
19507
19508 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19509
19510         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19511         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19512         the generic code needed for the ARM port.
19513
19514 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19515
19516         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19517         inssel-arm.brg: more ARM features and fixes.
19518
19519 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19520
19521         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19522         ARM port work in progress.
19523
19524 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19525
19526         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19527
19528         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19529
19530         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19531
19532         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19533
19534         * *-ia64.*: Ongoing IA64 work.
19535         
19536         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19537
19538 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * TODO: Remove out-of-data todo stuff.
19541
19542         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19543         dead code.
19544
19545         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19546
19547         * mini.h: Bump corlib version.
19548
19549 2005-07-27  Martin Baulig  <martin@ximian.com>
19550
19551         * mini-codegen.c
19552         (create_copy_ins): Added `const unsigned char *ip' argument; set
19553         `copy->cil_code' from it.
19554
19555 2005-07-27  Martin Baulig  <martin@ximian.com>
19556
19557         * mini-exceptions.c (mono_handle_exception): Don't call
19558         mono_debugger_handle_exception() for filters.
19559
19560 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19561
19562         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19563         as well.
19564
19565 2005-07-26  Martin Baulig  <martin@ximian.com>
19566
19567         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19568
19569         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19570         helper_compile_generic_method() if the method is actually virtual
19571         and non-final.
19572
19573 2005-07-26  Martin Baulig  <martin@ximian.com>
19574
19575         * mini.c
19576         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19577         public; this is now accessed directly by the debugger.
19578         (mono_generic_trampoline_code): Removed.
19579
19580         * debug-mini.c
19581         (mono_debug_init_method): Also add interncalls and wrappers.
19582
19583 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19584
19585         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19586
19587 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19590
19591 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19592
19593         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19594
19595 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19598         getting TLS offsets on AMD64 too.
19599
19600 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19601
19602         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19603
19604 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19605
19606         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19607         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19608
19609 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19612
19613         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19614         to mini.c.
19615
19616         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19617         mono_sparc_is_virtual_call ().
19618         
19619         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19620
19621         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19622         trampoline parameters.
19623
19624         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19625         
19626         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19627         to mono_arch_get_vcall_slot_addr.
19628
19629         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19630         trampoline code.
19631
19632         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19633
19634 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19637
19638 2005-07-19  Martin Baulig  <martin@ximian.com>
19639
19640         * exceptions-amd64.c (throw_exception): Call
19641         mono_debugger_throw_exception() here like we're doing it on i386.
19642
19643 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19644
19645         * mini-ia64.c: Add optimized TLS access support.
19646
19647 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19648
19649         * mini-exceptions.c: Ongoing IA64 work.
19650
19651         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19652
19653         * mini.c: Use the default optimization set when embedding. Fixes
19654         #75194.
19655
19656 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19659         of trampolines to a separate file.
19660
19661         * mini-trampolines.c: New file.
19662
19663         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19664         separate file.
19665         
19666         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19667         amd64/ia64 code.
19668
19669         * mini-codegen.c: Fix cygwin build.
19670
19671 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * mini.c: Add some minor changes needed by the IA64 port.
19674
19675         * *-ia64.*: Ongoing IA64 work.
19676
19677 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19680         trampolines into arch-independent and arch-dependent parts.
19681
19682         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19683
19684 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19687
19688         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19689         the xp-regalloc-branch for amd64.
19690
19691         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19692         xp-regalloc-branch for x86.
19693
19694 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19695
19696         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19697
19698 2005-07-06  Martin Baulig  <martin@ximian.com>
19699
19700         * mini.c
19701         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19702         (mono_jit_runtime_invoke): Likewise.
19703
19704 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19707         on x86 too.
19708         
19709         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19710         without loading their metadata. Reorganize the file format so exception handling+
19711         debug info is kept separate from normal method info. Create MonoJitInfo 
19712         structures for methods lazily.
19713
19714         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19715         loading metadata.
19716         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19717
19718         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19719
19720         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19721         in AOT code.
19722
19723         * mini.h: Bump AOT file version.
19724
19725 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19726
19727         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19728
19729 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19730
19731         * Makefile.am (check-local): Call semdel-wrapper.
19732
19733 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * mini-x86.c: Revert the last change as it seems to break the build..
19736
19737 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19740         
19741         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19742
19743 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19744
19745         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19746         outside of the macro, so strange stuff doesn't happen with gcc4
19747         (NEW_AOTCONST_TOKEN): Likewise.
19748
19749 2005-06-28  Martin Baulig  <martin@ximian.com>
19750
19751         * mini.c (mini_class_is_system_array): New static method; use this
19752         instead of `klass->parent == mono_defaults.array_class' everywhere
19753         since this also works for the new generic array class.
19754
19755 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19756
19757         * inssel.brg: Remove warnings.
19758
19759 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * mini-ia64.c: Ongoing IA64 work.
19762
19763         * basic-float.cs: Add float->i1 conversion test.
19764
19765         * iltests.il: Add conv.u4 test.
19766
19767 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * inssel-long.brg: Fix bug caused by last change.
19770
19771 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19772
19773         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19774         BSDs.  Allows the x86 JIT to work on OSX86
19775
19776 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19779         u4->i8 conversion.
19780
19781         * mini-ia64.c: Ongoing IA64 work.
19782
19783 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19784
19785         * mini-ia64.c: Ongoing IA64 work.
19786
19787         * driver.c: Clean up jit_code_hash as well when using --regression.
19788
19789         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19790
19791         * basic-long.cs: Add tests for long->u4 conversion.
19792
19793 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19794
19795         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19796         that we do not depend on undefined C behavior: the order stuff
19797         gets evaluated within an expression. Fixes mono when compiled on
19798         GCC 4.
19799
19800 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19801
19802         * *-ia64.*: Ongoing IA64 work.
19803
19804         * aot.c: Lower memory usage while loading AOT methods.
19805
19806         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19807
19808         * mini.h: Bump AOT file format version.
19809
19810 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19813
19814 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19815
19816         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19817         not on callee assembly). Fixed some comments.
19818
19819 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19822         it gets proper disassembly.
19823         (emit_method_info): Remove some dead code.
19824
19825         * mini.c (mini_method_compile): Allways allocate the GOT var in
19826         mono_method_to_ir for emulating opcodes.
19827
19828 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19831         before freeing the code memory. Fixes #74990.
19832
19833         * objects.cs: Add regression test for #74992.
19834
19835         * liveness.c: Extend live ranges of arguments to the beginning of the
19836         method. Fixes #74992.
19837
19838         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19839         so it points into the faulting instruction.
19840
19841 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19844
19845         * *-ia64.*: Ongoing IA64 work.
19846
19847         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19848
19849 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19852
19853         * *-ia64.*: Ongoing IA64 work.
19854
19855 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19856
19857         * basic-long.cs: Add tests for add/sub.ovf.
19858
19859         * basic.cs: Add tests for sub.ovf.
19860
19861         * *-ia64.*: Ongoing IA64 work.
19862
19863 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * *-ia64.*: Ongoing IA64 work.
19866
19867         * basic.cs: Add conv.ovf.i4.un test.
19868
19869 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19870
19871         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19872         
19873 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19874
19875         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19876
19877 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19878
19879         * *-ia64.*: Ongoing IA64 work.
19880
19881 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19882
19883         * trace.[ch]:
19884         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19885
19886 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19889
19890 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19893
19894         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19895         of a call is callable by a near call.
19896
19897 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * mini-ia64.c: Ongoing IA64 work.
19900
19901 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * genmdesc.c: Make the generated array non-static.
19904
19905         * inssel-long.brg: Fix LSHR_IMM rule.
19906
19907         * *-ia64.*: Ongoing IA64 work.
19908
19909         * *-ia64.*: Ongoing IA64 work.
19910
19911 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19912
19913         * *-ia64.*: Ongoing IA64 work.
19914
19915         * *-ia64.*: Ongoing IA64 work.
19916         
19917         * mini-ia64.c: Ongoing IA64 work.
19918
19919         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19920
19921 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19922
19923         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19924         
19925         * objects.cs basic-long.cs: Move some tests to objects.cs.
19926
19927 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * *-ia64.*: Ongoing IA64 work.
19930
19931         * iltests.il: Add a new test.
19932
19933         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19934         newobj. Fixes #75042.
19935
19936 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * *-ia64.*: Ongoing IA64 work.
19939         
19940         * *-ia64.*: Ongoing IA64 work.
19941         
19942         * *-ia64.*: Ongoing IA64 work.
19943
19944         * basic.cs objects.cs: Move tests accessing static variables as well.
19945
19946         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19947
19948 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19951
19952         * driver.c: Always print failed tests.
19953
19954         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19955         frame pointer.
19956
19957         * *ia64*: Ongoing IA64 work.
19958
19959 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * basic.cs: Add tests for add.ovf. Fix warnings.
19962
19963 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19964
19965         * driver.c (mono_main): Avoid crash if no argument is passed to
19966         --break;  Do not use g_error, but f_printf.   And fix all other
19967         ocurrences of the same crash.
19968
19969 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19972         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19973         Fixes #74742.
19974
19975 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * *-ia64.*: Add beginnings of IA64 backend.
19978
19979         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19980
19981 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19982
19983         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19984         Fixes #74925.
19985
19986         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19987
19988         * mini-amd64.c: Fix a warning.
19989
19990 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19993         in float_neg. Fixes #74897.
19994
19995         * mini-amd64.c (emit_call): Fix another near call bug.
19996
19997 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19998
19999         * declsec.c: Keep the appdomain information in the structure. Added a 
20000         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
20001         value gets overwritten).
20002         * declsec.h: Set the default MonoArray for the the stack to 6. Added
20003         an MonoAppDomain member to MonoSecurityFrame.
20004         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
20005         used in the stack walk. Now use a MonoArray which grow (double) when
20006         it gets full.
20007
20008 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20009
20010         * mini.c: Re-enabled runtime cleanup, since running threads should
20011         now properly stop when exiting.
20012
20013 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20014
20015         * mini-codegen.c: New file contaning the arch-independent local
20016         register allocator. Not used by any architectures yet.
20017
20018         * mini.h linear-scan.c: Merge some changes from the 
20019         mini-xp-local-regalloc branch.
20020
20021 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * mini-amd64.c (emit_call): Fix calls to native functions when the
20024         runtime is compiled as a shared library. Fixes #74756.
20025
20026         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
20027         on a literal field. Fixes #74751.
20028
20029 2005-04-25  Raja R Harinath  <rharinath@novell.com>
20030
20031         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
20032
20033 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * objects.cs: Add missing null casting test.
20036
20037 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
20040         in wrapper methods. Also rename 'address' variable to 'offset'.
20041
20042 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20043
20044         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
20045         warnings.
20046         
20047         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
20048
20049         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
20050         work on windows.
20051
20052 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
20053
20054         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
20055
20056 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20057
20058         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
20059         just the last bytes.
20060
20061 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * aot.c (mono_compile_assembly): Fix warning.
20064
20065         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
20066         by the _MSC_VER stuff.
20067
20068 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * inssel-long.brg: Fix #74588.
20071
20072         * cpu-amd64.md: Fix #74591.
20073
20074         * iltests.il: Add new regression tests.
20075
20076 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
20079         valuetype.
20080
20081 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
20084
20085         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
20086         from Bill Middleton <flashdict@gmail.com>.
20087
20088 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
20089
20090         * arrays.cs: Add new regression test. Fix warnings.
20091
20092 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
20095         and leakage in CKFINITE.
20096
20097         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
20098         this to a null op since it is called on amd64 too.
20099
20100         * exceptions-amd64.c (get_throw_trampoline): Align stack.
20101
20102         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
20103         body since this is not used on amd64.
20104         
20105         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
20106
20107         * mini-amd64.c: Remove obsolete fixmes.
20108
20109         * mini.c (print_method_from_ip): Fix debugging support.
20110
20111 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20112
20113         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
20114         so that expressions that don't give much gain are not reduced.
20115         * ssapre.h: Likewise.
20116
20117 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
20120
20121         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
20122
20123         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
20124
20125 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
20126
20127         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
20128
20129         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
20130
20131 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
20134         stack touching.
20135
20136         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
20137
20138         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
20139
20140         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
20141
20142         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
20143         MONO_ARCH_USE_SIGACTION. Fixes #74252.
20144
20145         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
20146
20147         * mini-x86.c: Fix up stack overflow handling.   
20148
20149         * exceptions.cs: Add new regression test.
20150
20151 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
20154         mono_jit_thread_attach.
20155
20156         * mini.c (mono_method_to_ir): Verify called method is not abstract.
20157
20158 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20159
20160         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
20161         avoid calling constructors using callvirt.
20162
20163         * inssel.brg: Fix #74073.
20164
20165 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
20166
20167         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
20168         compilation with non-GCC compilers.
20169         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
20170         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
20171
20172 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
20173
20174         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
20175         klass->interface_offsets (will likely fix bug#74073).
20176
20177 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
20178
20179         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
20180
20181 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
20182
20183         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
20184         to amd64_div_reg_size ().
20185         
20186         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
20187
20188 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20191
20192 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20193
20194         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20195
20196 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20199         
20200         * mini.c (mono_precompile_assembly): Load and precompile referenced
20201         assemblies as well. Fixes #74015.
20202
20203 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20204
20205         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20206
20207 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20208
20209         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20210         a lot of checks and (anyway) permissions cannot work until corlib is 
20211         loaded.
20212
20213 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20214
20215         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20216
20217 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20218
20219         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20220         calls (fixes bug#72824).
20221
20222 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20223
20224         * mini.c: fix tail recursion elimination (see test in bug#73936).
20225
20226 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20229         some fp functions in sse2 mode.
20230
20231 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20234
20235 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * mini.h mini.c: Add mono_get_jit_tls_key ().
20238
20239         * mini-x86.c: Enable fast TLS support on windows.
20240
20241 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20242
20243         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20244         * mini.c: Check for p/invoke method when generating code. If a
20245         p/invoke method, or it's class, isn't decorated with [Suppress
20246         UnmanagedCodeSecurity] then generate code to call System.Security.
20247         UnmanagedDemand (only if the security manager is active).
20248
20249 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20252         last change as it seems to cause strange crashes.
20253         
20254 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20255
20256         * *.c: handle unsafe function pointers where needed.
20257
20258 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * mini.c (mono_jit_free_method): Remove the fixme too.
20261
20262 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20263
20264         * mini.c: As discussed, make the code actually free the delegate
20265         thunk now, to enable the debugging of delegate problems, use
20266         MONO_DEBUG=1 when running Mono. 
20267
20268         This takes also care of parts of the leaks as seen by Joe.
20269
20270 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20273         thread_tls_offset calculation.
20274
20275 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20276
20277         * declsec.c: Reworked linkdemand checks for icall. The previous code
20278         was using the declaration code (untrusted) and didn't work as expected
20279         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20280         specific case.
20281
20282 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * iltests.il: Add new localloc test.
20285
20286         * mini-amd64.c: Handle large stack allocations the same way as on
20287         windows if stack overflow handling is working.
20288         
20289         * mini-amd64.c: Allocate the signal stack using mmap.
20290
20291         * mini.c (sigsegv_signal_handler): Fix reading of context.
20292
20293         * mini-exceptions.c: Fix up stack overflow handling.
20294
20295         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20296
20297         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20298
20299         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20300
20301         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20302
20303         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20304         tramp_init functions as they are no longer needed.
20305
20306 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20307
20308         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20309         
20310         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20311
20312         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20313         
20314         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20315         support that now.
20316
20317         * mini-ops.h: Add OP_LMUL_IMM.
20318
20319         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20320         long mul/div opcodes as intrinsic.
20321
20322         * mini-amd64.c (emit_call): Handle the case when the callee might be
20323         an AOT method.
20324
20325 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20328         extra safe.
20329         
20330         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20331
20332         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20333
20334 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20335
20336         * mini.c (mono_codegen): Don't leak here, to help people running
20337         monogrind.
20338
20339 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20340
20341         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20342         conversions in sse2 mode.
20343
20344         * basic-float.cs: Add regression test.
20345         
20346         * mini-amd64.c: Reenable sse2.
20347
20348 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20349
20350         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20351
20352 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20353
20354         * driver.c: Copyright text should include 2005.
20355         
20356 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * cpu-amd64.md (load_membase): Fix more max lengths.
20359
20360 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20361
20362         * cpu-amd64.md (load_membase): Fix max length.
20363
20364         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20365
20366         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20367
20368         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20369         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20370
20371         * basic-float.cs: Add rounding regression test.
20372
20373         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20374
20375 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20376
20377         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20378         structures in registers for pinvoke wrappers.
20379
20380 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20383
20384 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20387         wrapper to mono_jit_thread_attach.
20388
20389         * mini.c (mini_jit_thread_attach): New jit icall.
20390
20391         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20392         native->managed wrappers.
20393
20394         * exceptions.cs: Add new regression test.
20395
20396         * mini.c (optimize_branches): Check regions in the cbranch to throw
20397         block case as well. Fixes #73242.
20398
20399 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20400
20401         * mini.c: thread safety fixes.
20402
20403 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20406         patching stuff, since delegates use jump trampolines so there is
20407         no caller.
20408
20409         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20410         jump trampolines.
20411         
20412         * tramp-amd64.c: Fix build.
20413
20414         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20415         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20416
20417         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20418         Rename this to mono_arch....
20419         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20420
20421         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20422
20423         * mini-amd64.c (emit_call): If both the caller and the callee is
20424         guaranteed to have 32 bit addresses, emit a normal call.
20425
20426         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20427
20428         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20429         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20430         method_ptr inside delegates.
20431
20432 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20435         invalidated. Fixes #73001.
20436
20437         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20438
20439         * mini-x86.c: Only use stdcall for pinvokes on windows.
20440
20441 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20442
20443         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20444         * mini-x86.c: remove unreliable __thread var offset detection,
20445         use the correct accessors and enable by default.
20446
20447 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * mini.c (mono_jit_free_method): Fix memory leak.
20450
20451 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20452
20453         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20454
20455 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20456
20457         * cpu-amd64.md: Fix lengths of atomic opcodes.
20458
20459 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20460
20461         * driver.c: try to not imply using ICU is any good.
20462
20463 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20466         functions as inline ops.
20467
20468         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20469         some Interlocked functions as inline ops.
20470
20471         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20472
20473         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20474
20475         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20476
20477         * mini.c: Add support for OP_NOT_TAKEN.
20478
20479         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20480         structures in registers for pinvoke wrappers.
20481
20482         * mini-amd64.c: Fix warnings.
20483
20484 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20487
20488         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20489
20490         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20491         address instead of loading the address from it.
20492
20493         * mini-x86.c: Add support for returning small structs in registers
20494         on Win32. Fixes part of #70864.
20495         
20496 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20497
20498         * trace.c (get_token): Improve error checking.
20499
20500 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20501
20502         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20503
20504 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20505  
20506         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20507         it can be reused for MonoClass.
20508         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20509         _LINKDEMAND.
20510
20511 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20512
20513         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20514         instead of a MonoReflectionMethod. The method information wasn't used
20515         when displaying SecurityException details (but will be now).
20516
20517 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20518
20519         * Makefile.am : windows build fix.
20520
20521 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * iltests.il: Add new regression test.
20524
20525         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20526         #72522.
20527
20528 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20529  
20530         * mini.c: Moved linkdemand check into helper function check_linkdemand
20531         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20532         LDFTN, LDVIRTFTN).
20533
20534 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20535
20536         * declsec.c: Added statistics counter for different kinds of 
20537         LinkDemands.
20538         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20539         (and commented) declaration.
20540         * mini.c: Added statistics counter for security Demand code 
20541         generation. Added display of security statistics.
20542
20543 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20544
20545         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20546         Fix compilation errors under gcc-2.95.
20547
20548 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20549
20550         * mini.c, driver.c: Use the new jit trampoline hashtable
20551
20552 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20553
20554         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20555
20556 2005-02-11  Martin Baulig  <martin@ximian.com>
20557
20558         * debug-mini.c (mono_debug_close_method): Free the line number array.
20559
20560 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20563         icalls.
20564
20565         * mini.h: Bump AOT file format version. 
20566
20567 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20568
20569         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20570         APTC and P/Invoke.
20571         * declsec.h: Added macros to get/set lazyly initialized security 
20572         informations about assemblies. Added new enum for different type of
20573         possible LinkDemand violation. Added function to check LinkDemands.
20574         * mini.h: Added a field to MonoCompile to hold any security violation
20575         detected when JITting a method (so it can be thrown later).
20576         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20577         and CEE_CALLVIRT. Added code to throw exception at the end of
20578         mini_method_compile (note: the exception is unhandled right now).
20579
20580 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20581
20582         * mini.c, jit-icalls.c: use the managed implementation of
20583         memset for initobj and memset, to avoid managed <-> unmanaged
20584         transitions.
20585
20586 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20589         optimization if it would need a GOT var.
20590
20591         * basic.cs: Add tests for constant propagation and switch statements.
20592
20593         * ssa.c: Fix out-of-range constant propagation and switch statements.
20594
20595 2005-02-09    <vargaz@freemail.hu>
20596
20597         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20598
20599 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20600
20601         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20602
20603 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20604
20605         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20606
20607 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20608
20609         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20610         arithmetic operations.
20611
20612 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20613
20614         * mini-ppc.c: add a workaround for broken user code that
20615         DllImports vararg functions with non-vararg signatures.
20616
20617 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20618
20619         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20620         meaningfull error message for assemblies written in Managed C++.
20621
20622         * tramp-amd64.c mini-amd64.h: Add support for 
20623         create_trampoline_from_token ().
20624
20625         * aot.c mini-x86.c abcremoval.c: Applied patch from
20626         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20627
20628 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20629
20630         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20631         which takes a MonoImage/token as parameter instead of a MonoMethod.
20632
20633         * aot.c: Use the new trampoline for initializing vtables.
20634
20635         * aot.c: Add support for ldfld/stfld_remote wrappers.
20636
20637         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20638         rules for compare <MEM>, IMM.
20639
20640         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20641
20642         * aot.c: Handle inherited finalizers correctly.
20643
20644 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * inssel.brg (stmt): Add a missing _setup_... ().
20647
20648         * aot.c: Save some parts of the class state to the AOT file and use it
20649         to recompute that state when a class is initialized.
20650
20651         * mini.c: Install AOT hooks into the runtime.
20652
20653         * mini.h: Bump AOT file format version.
20654         
20655         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20656         Fixes #72148.
20657
20658         * iltests.il: Add new test.
20659
20660 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20661
20662         * mini.c: fix typo.
20663
20664 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20665
20666         * mini.c: setup the statistical profiler in the thread attach
20667         callback to cope with the new single thread code.
20668
20669 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20670
20671         * mini-ppc.c: ensure we have enough room for the profiler
20672         calls (fixed bug#72084).
20673
20674 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20675
20676         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20677         it.
20678
20679 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20680
20681         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20682
20683 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20684
20685         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20686         to succesfully execute parrotbench).
20687         * ssapre.h: Likewise.
20688
20689 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20690
20691         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20692         variable for stores to method arguments (fixes a SSAPRE issue).
20693
20694 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20695
20696         * mini.c: handle value types in dup, fixes gen-112.cs.
20697
20698 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20699
20700         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20701         sequence for calls in dynamic methods to avoid thunks.
20702
20703 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20704
20705         * mini.c: correctly remove dynamic methods from the hashtable.
20706
20707 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20708
20709         * driver.c: Disabled SSAPRE until fix the bug that appears
20710         in IronPython's parrotbench.
20711
20712 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20715
20716         * mini.c (mono_method_to_ir): Revert the previous change.
20717         
20718         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20719         when AOT compiling.
20720
20721         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20722         mono_jit_info_table_find () etc. when running under valgrind.
20723
20724         * inssel.brg: Fix warnings.
20725
20726         * mini-exceptions.c: Fix warnings.
20727
20728 2005-01-31  Martin Baulig  <martin@ximian.com>
20729
20730         * driver.c (compile_all_methods_thread_main): Don't try to compile
20731         generic methods or anything which has type parameters.
20732
20733 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20736
20737         * TestDriver.cs: Add --verbose flags.
20738
20739         * graph.c ssa.c: Fix 64 bit warnings.
20740         
20741         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20742         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20743         Fix 64 bit warnings.
20744
20745         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20746         variable not spotted by gcc.
20747         
20748         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20749         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20750         X86_COMPARE_MEMBASE opcodes.
20751
20752         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20753
20754 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20755
20756         * *: MonoMethod->signature might be NULL now. You *MUST* use
20757         mono_method_signature.
20758
20759 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20760
20761         * driver.c (compile_all_methods_thread_main): Compile the methods
20762         without invoking cctors.
20763
20764 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20765
20766         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20767         * basic-calls.cs: test for the above.
20768
20769 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20772         MonoJitInfo changes.
20773
20774 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20777         eagerly if it contains dynamic methods.
20778         
20779         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20780
20781         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20782         trace, it is now computed by an icall from trace_ips.
20783         
20784         * mini-exceptions.c: Fix a warning.
20785
20786 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20787
20788         * mini-exceptions.c: don't bother getting stack trace info if
20789         it's not going to be used.
20790
20791 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20792
20793         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20794         ssapre-mini-ops.h.
20795
20796 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20797
20798         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20799
20800         * aot.c: Avoid calling mono_method_get_header () if not needed.
20801
20802         * mini.h: Bump AOT file format version.
20803         
20804         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20805
20806         * mini.c (mono_print_tree): Print more info for calls.
20807
20808 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20809
20810         * declsec.h: Remove warning by adding missing include for marshal.h
20811
20812 2005-01-26  Martin Baulig  <martin@ximian.com>
20813
20814         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20815         `ip' twice.
20816
20817 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20820         flags.
20821
20822         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20823
20824         * aot.c (mono_compile_assembly): Fix a warning.
20825
20826 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20827
20828         * declsec.c: Look for security attributes on the original MonoMethod 
20829         (and not the wrapped one). This fix permissions on icalls.
20830
20831 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20834
20835         * mini.c (mono_allocate_stack_slots): Add a fixme.
20836
20837         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20838
20839 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20840
20841         * inssel.brg: optimize casts of sealed types (more
20842         optimizations waiting for fixes in remoting).
20843
20844 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * inssel.brg (stmt): Add another dummy rule.
20847
20848         * driver.c: Fix warnings.
20849
20850         * driver.c (mono_main): If running under valgrind, instruct glib to use
20851         the system allocation functions so valgrind can track the memory
20852         allocated by the g_... functions.
20853
20854         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20855
20856         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20857
20858         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20859
20860         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20861         variables in try regions.
20862
20863         * mini.c (mini_method_compile): Don't disable optimizations on large
20864         methods when AOT compiling.
20865
20866         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20867         allocate stack slots. Not yet used.
20868
20869 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20870
20871         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20872
20873 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20874
20875         * mini-ppc.c: make the branch info relative as the code
20876         buffer can be reallocated.
20877
20878 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20879
20880         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20881         * driver.c: Removed the AOT/security restriction. Now initialize the
20882         security manager (in metadata) if --security is used.
20883         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20884         rather than the pointer to declarative security, when AOT is used.
20885
20886 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20887
20888         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20889         basic blocks, reduced intrinsic exception throwing code size.
20890
20891 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20892
20893         * driver.c (mini_usage): Reorder the usage screen.
20894
20895 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * mini.c (mono_resolve_patch_target): Fix warning.
20898
20899 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20900
20901         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20902         previous patch.
20903
20904         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20905
20906         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20907         breaks the amd64 build.
20908
20909         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20910         register allocation. Fixes #71454.
20911
20912         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20913
20914         * arrays.cs: Add new regression test.   
20915
20916 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20917
20918         * ssapre.c: Turned usage of snprintf to GString.
20919         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20920         (I left it on by mistake in my previous commit).
20921
20922 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20923
20924         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20925         on cond branch optimization (fixes bug# 71515).
20926
20927 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20928
20929         * abcremoval.c: Fixed bug 71062.
20930         * abcremoval.h: Likewise.
20931
20932 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20933
20934         * mini.c: Added a new functionality to optimize_branches, the removal
20935         of useless basic blocks, and fixed some problem in the removal of
20936         critical edges; some utility functions added for both purposes.
20937         * ssapre.c: Added complex expression support, and fixed bug 70637.
20938         * ssapre.h: Likewise.
20939         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20940         enabled in SSAPRE.
20941         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20942         * driver.c: Re-enabled SSAPRE.
20943
20944 2005-01-19  Martin Baulig  <martin@ximian.com>
20945
20946         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20947         the result of mono_get_method_constrained().
20948
20949 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20950
20951         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20952         manager.
20953
20954 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20955
20956         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20957         be detected.  Fixes #59296.
20958
20959 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20962         which can happen. Fixes #71361.
20963
20964 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20965
20966         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20967         manager.
20968
20969 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20970
20971         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20972         appdomain-unload.exe to fail.
20973         
20974         * mini.c: Fix some memory leaks.
20975
20976 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20977
20978         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20979         Fixed bug and sped up some codepaths.
20980
20981 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20982
20983         * mini.c: Fix some memory leaks.
20984
20985         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20986         conversion.
20987
20988         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20989
20990         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20991         #71320.
20992
20993         * iltests.il: Add regression test for #71320.
20994
20995 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * mini.c (mono_codegen): Fix installation of profiler hooks.
20998
20999         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
21000
21001 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21002
21003         * mini.h, mini.c, cfold.c: optimize access to enum
21004         readonly fields, too. Eval conditional branches if possible
21005         to perform unreachable code removal in more cases.
21006
21007 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
21008
21009         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
21010
21011         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
21012         code manager.
21013
21014         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
21015         WinXP DEP. Fixes #71244.
21016
21017 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
21018
21019         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
21020
21021 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21022
21023         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
21024
21025 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21026
21027         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
21028         changes.
21029
21030         * mini.h: Bump AOT version.
21031
21032         * mini.h (MonoCompile): Change exvar to a hash table.
21033
21034         * mini.c: Allocate a separate exvar for each handler block.
21035
21036         * mini.c: Get rid of the computation of filter_lengths, its not needed.
21037
21038         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
21039         ex var with the pending exception and only throw if the two are equal.
21040         Fixes #68552.
21041         
21042         * exceptions.cs: Add tests for rethrow and nested catch clauses.
21043
21044         * mini-x86.c: Fix warnings.
21045
21046         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
21047         used by all the ports now.
21048
21049         * aot.c: Add write-symbols and save-temps options.
21050
21051 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21052
21053         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
21054
21055 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
21056
21057         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
21058         operations.
21059
21060         * tramp-s390.c: Check vtable slot belongs to the domain.
21061
21062         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
21063         as per other platforms.
21064
21065         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
21066
21067 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
21068
21069         * driver.c: we don't run the Main() code in a subthread anymore.
21070
21071 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
21072
21073         * mini.c: added experimental rtc support in the statistical
21074         profiler: if the user has the permission, more accurate statistics
21075         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
21076         The MONO_RTC value must be restricted to what the linux rtc allows:
21077         power of two from 64 to 8192 Hz.
21078
21079 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
21080
21081         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
21082
21083 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
21084
21085         * mini-ppc.c: better icache flush for smp.
21086
21087 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21088
21089         * mini-amd64.c (emit_move_return_value): Fix memory leak.
21090
21091         * mini-x86.c (get_call_info): Add the get_call_info () code from the
21092         amd64 port, not yet used.
21093
21094 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
21097         a struct type.
21098
21099 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21100
21101         * driver.c: Added --security option to activate the security manager.
21102         Right now this will allow code generation for declarative demands and
21103         is disabled when AOT is specified.
21104         * mini.c: Add code generation for declarative security demands.
21105         * mini.h: Add mono_use_security_manager as an extern gboolean.
21106
21107 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21108
21109         * aot.c (mono_compile_assembly): Speed up compilation a bit by
21110         emitting more dense assembly code.
21111
21112         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
21113         exception throwing stuff.
21114
21115 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21116
21117         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
21118         dead code.
21119
21120         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
21121         left in by mistake.
21122
21123         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
21124         fixed.
21125
21126         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
21127
21128         * tramp-*.c: Only patch vtable slots if the object is in the current
21129         domain. Fixes appdomain-unload.exe.
21130
21131         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
21132         
21133         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
21134         x86 branch.
21135
21136 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21137
21138         * mini.c (reverse_branch_op): New helper function.
21139
21140         * mini.c (optimize_branches): Run the new optimization only on 
21141         platforms which support it. Also reverse all kinds of branches.
21142
21143         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
21144
21145         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
21146         a throw statement.
21147
21148         * mini.c (optimize_branches): Reverse not-equals branches if the false
21149         bblock is a throw. This happens a lot of time with argument checking in
21150         corlib.
21151
21152         * mini.c (mono_codegen): Add support for placing basic blocks after
21153         the function epilogue.
21154
21155         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
21156         function epilogue.
21157         
21158 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
21159
21160         * mini.c (setup_stat_profiler): Only set this up if the platform
21161         supports ITIMER_PROF.
21162
21163 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21164
21165         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
21166         previous patch.
21167
21168         * inssel.brg: Fix a warning.
21169
21170 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21171
21172         * mini.c: added support for statistical profiler 
21173         (run with: --profile=default:stat).
21174
21175 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
21176
21177         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
21178
21179         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
21180
21181         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
21182         related to global registers from the amd64 port.
21183
21184 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21185
21186         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
21187
21188         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21189         with global registers.
21190         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21191
21192         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21193
21194 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21195
21196         * debug-mini.c (encode_value): Fix off-by-one.
21197
21198         * aot.c (encode_value): Likewise.
21199
21200         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21201
21202 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21203
21204         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21205         AOT.
21206
21207         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21208         
21209         * aot.c (emit_method_info): Increase size of temp buffer.
21210
21211         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21212         the AOT case.
21213
21214 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21215
21216         * aot.c (emit_method_info): Fix build.
21217         
21218         * aot.c: Further rework of the AOT file format to reduce the size of
21219         the method info data.
21220
21221         * mini.h: Bump AOT file format version.
21222
21223 2004-12-27  Martin Baulig  <martin@ximian.com>
21224
21225         * mini.c (mini_get_method): New static method; call
21226         mono_get_method_full() and mono_get_inflated_method().
21227         (mono_method_to_ir): Use mini_get_method() instead of
21228         mono_get_method_full(). 
21229
21230 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21231
21232         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21233
21234 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21237
21238         * inssel-amd64.brg: Add some optimization rules.
21239
21240 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21241
21242         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21243         standard not GC'd stuff is fine.
21244
21245 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * aot.c: Rework the AOT file format to get rid of most of the global
21248         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21249
21250         * mini.h: Bump AOT file format version.
21251         
21252 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21253
21254         * mini.h: Bump AOT file format version.
21255
21256         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21257         address is inside a GOT.
21258
21259         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21260
21261         * cpu-pentium.md: Increase the maximum size of some instructions which
21262         might involve a got access.
21263         
21264         * mini.c (get_method_from_ip): Another debug helper function.
21265
21266         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21267         when got var accesses are created during the decompose phase.
21268
21269         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21270
21271         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21272         argument mini_compile_method and to MonoCompile, and use this to
21273         determine whenever a given method is compiled for AOT. This allows the
21274         other methods compiled during AOT compilation to be free of AOT stuff,
21275         so the backends does not need to add special support for them by
21276         creating a fake GOT etc.
21277
21278         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21279         longer needed.
21280
21281 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21282
21283         * mini.c (mono_method_to_ir): It turns out that some of the
21284         x-appdomain wrappers are lax with types, so just ignore this for
21285         all wrappers.
21286
21287         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21288         at the vtable->klass. If it is non-shared code we can just use the
21289         vtable.
21290
21291 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21292
21293         * mini-ppc.c: access MonoDomain from tls, too.
21294
21295 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21296
21297         * declsec.c: Removed unused variable (and related warning ;-)
21298
21299 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21300
21301         * iltests.il: New test for LDELEMA on an array of ref types.
21302
21303         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21304         all ldelema's on reftypes.
21305         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21306         it was the wrong place to put it.
21307
21308         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21309         register to pop to make this cleaner, at the request of Paolo.
21310
21311 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21312
21313         * mini-ops.h (OP_GETHASHCODE): New op.
21314
21315         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21316
21317         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21318         operation.
21319
21320         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21321         by 25%.
21322         
21323         * mini-x86.c (mono_arch_output_basic_block): Rather than
21324
21325         add ebp, 4
21326
21327         Emit
21328
21329         pop edx
21330
21331         The first is 3 bytes while the second is 1. This saves 36 kb on
21332         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21333         see a small boost because of icache locality.
21334
21335         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21336
21337 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21338
21339         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21340         started code sharing with the generic code.
21341
21342 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21343
21344         * mini-ppc.c, cpu-g4.md: added code for direct access to
21345         tls data slots.
21346
21347 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21348
21349         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21350          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21351         to OP_TLS_GET.
21352
21353 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21354
21355         * declsec.c|h: Added functions to cache the declarative stack modifiers
21356         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21357         structure.
21358         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21359         created. Register internal calls for System.Security.SecurityFrame::
21360         _GetSecurityFrame and _GetSecurityStack.
21361         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21362         the definitions for the new stack walk/callback mechanism.
21363         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21364         first security frame for LinkDemands and InheritanceDemands) and
21365         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21366         from lupus.
21367         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21368         walk initialization (lupus).
21369
21370 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21371
21372         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21373         idiom.
21374         (handle_loaded_temps): Do not create a temporary variable for
21375         things that we know are temps. They will never be modified.
21376         (mono_spill_call): Set MONO_INST_IS_TEMP
21377         (mono_emulate_opcode): ditto
21378         (emit_tree): ditto
21379         (mono_method_to_ir.CEE_DUP): ditto
21380
21381 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21382
21383         * mini.c (type_to_eval_stack_type): Make this handle the void type
21384         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21385         (emit_tree): use ip_in_bb to special case some common idioms
21386         Update all callers to pass in the IP.
21387         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21388
21389         This gives us a nice 2% speedup in mcs bootstrap.
21390
21391         * mini-x86.c (peephole_pass): Peephole pass to make
21392         mov  [foo], eax
21393         push [foo]
21394
21395         into
21396
21397         mov [foo], eax
21398         push eax
21399
21400         * mini.c (ip_in_bb): new method.
21401         (mono_method_to_ir): use this method rather than doing the hash
21402         lookup ourselves.
21403
21404         * linear-scan.c (mono_linear_scan): When expiring actives, you
21405         don't need to keep around variables that expire on this
21406         instruction. This makes it so that:
21407              a = b + 1
21408         will turn into:
21409              store (ebx add (ebx, 1))
21410         which will become
21411              add ebx, 1
21412
21413 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21414
21415         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21416         combination to avoid doing two copies. Fix up problems with previous
21417         patch.
21418
21419         * mini.c: Fix 64 bit warnings.
21420
21421         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21422
21423 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21426         changes from the x86 code.
21427
21428         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21429
21430 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21431
21432         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21433         throwing code to reduce its size, unify the AOT and non-aot code and 
21434         get rid of relocations in the AOT case.
21435
21436         * mini-x86.h mini.c exceptions-x86.c 
21437         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21438         raise corlib exceptions which doesn't require relocations in the 
21439         caller.
21440
21441         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21442
21443 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21444
21445         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21446         needed.
21447
21448         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21449         in the AOT case.
21450
21451 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21452
21453         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21454         with add function when used from Inc/dec atomic 
21455         functions. Re-enabled optimization on x86.
21456         * mini-ops.h: renamed atomic_add functions to
21457         allow _add to match the Interlocked::Add and
21458         _add_next to match Interlocked::Inc/Dec.
21459
21460 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21461
21462         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21463         linking of BBs to the end BB, and enabled SSAPRE also with
21464         consprop and copyprop (which was prevented by that bug).
21465
21466 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21467
21468         * mini-x86.c: disabling the Interlocked optimizing code. 
21469
21470 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21471
21472         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21473         file version check.
21474         
21475 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21476
21477         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21478         interlocked optimization due lack of support on x86, rewrote 
21479         exchange to take into account that base may be in eax.
21480         
21481         xsp works again; activated Interlocked optimizing code.
21482         
21483 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21484
21485         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21486
21487 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21488
21489         * mini-ops.h: Add new opcodes.
21490
21491         * mini.h: Add new patch types. Add got_var to MonoCompile.
21492
21493         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21494         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21495         make it work with all kinds of patchable code.
21496
21497         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21498         address of the GOT, and referencing entries in the GOT.
21499
21500         * mini.c: Add code to load the GOT address if needed by an opcode.
21501
21502         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21503         independent AOT code on the x86 using an elf-style Global Offset Table.
21504
21505 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21506
21507         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21508
21509 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21510
21511         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21512         when running xsp.
21513
21514 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21515
21516         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21517         of Interlocked:Increment/Decrement/Add as inline ops.
21518         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21519
21520 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21521
21522         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21523         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21524
21525 2004-12-12  Duncan Mak  <duncan@ximian.com>
21526
21527         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21528         again. `patch_info->table_size' is no longer valid after Zoltan's
21529         commit #37636.
21530
21531 2004-12-12  Martin Baulig  <martin@ximian.com>
21532
21533         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21534         if we are the "real" method, ie. not an inlined method inside it.
21535
21536 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21537
21538         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21539         before we look in the special fields table. This fixes
21540         ../tests/thread-static-init.cs.
21541
21542 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21545         for Array get_Rank and get_Length. Fixes bug #70465.
21546
21547 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21550         separate structure to reduce the size of MonoJumpInfo.
21551
21552 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21553
21554         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21555
21556 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21557
21558         * mini.c (mini_get_inst_for_method): Changed to allow ports
21559         to return a MonoInst instead of opcode 
21560         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21561         
21562         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21563         Allow ports to return a created MonoInst instead of op-code, will enable
21564         new optimizations.
21565         (renamed mini_get_opcode_for_method to better reflected the functionality)
21566
21567 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21568
21569         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21570
21571 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21572
21573         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21574         Fixes #69985.
21575
21576 2004-12-08  Martin Baulig  <martin@ximian.com>
21577
21578         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21579         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21580
21581 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21582
21583         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21584         correctly.
21585
21586         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21587         arithmetic.
21588
21589 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21590
21591         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21592
21593 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21594
21595         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21596         bug introduced by the previous patch.
21597
21598 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21599
21600         * mini-ppc.c, objectc.cs: handle large structs passed by value
21601         (fixes bug #69972).
21602
21603 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21604
21605         * mini-ppc.c: OP_ARGLIST implementation from
21606         Geoff Norton  <gnorton@customerdna.com>.
21607
21608 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21609
21610         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21611         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21612
21613 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21614
21615         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21616
21617 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21618
21619         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21620         support.
21621
21622 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21623
21624         * mini-sparc.c: Zero out localled-ed memory.
21625
21626         * iltests.il: Add tests for zeroing out localloc-ed memory.
21627
21628 2004-12-04  Martin Baulig  <martin@ximian.com>
21629
21630         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21631         mono_method_get_signature_full().       
21632
21633 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21634
21635         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21636         and some utility functions (always for SSAPRE), integrated SSAPRE.
21637         * mini.h: Likewise.
21638         * driver.c: Added ssapre option.
21639         * ssa.c: Small fix on OP_ARG handling.
21640         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21641         * Makefile.am: Likewise.
21642
21643 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21644
21645         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21646         now in the xp code.
21647
21648         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21649         icall.
21650
21651 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21652
21653         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21654         
21655         * cpu-s390.md : Increase instruction length of oparglist.
21656
21657         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21658
21659 2004-11-30  Martin Baulig  <martin@ximian.com>
21660
21661         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21662         virtual generic methods.  We call a special helper_compile_generic_method()
21663         icall to retrieve the method from the vtable, inflate and compile
21664         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21665
21666         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21667
21668 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21671
21672 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21673
21674         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21675         Fixes #69929.
21676
21677 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21678
21679         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21680         platforms with PIC aot.
21681
21682 2004-11-28  Martin Baulig  <martin@ximian.com>
21683
21684         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21685         Fixes gen-112.cs.
21686
21687 2004-11-28  Martin Baulig  <martin@ximian.com>
21688
21689         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21690         the result of mono_type_get_underlying_type() to check whether
21691         we're byref.
21692
21693 2004-11-26  Martin Baulig  <martin@ximian.com>
21694
21695         * mini.c
21696         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21697         in the g_assert().
21698
21699 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21700
21701         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21702         the same way as the other arguments so they won't get clobbered.
21703
21704         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21705         calls through R11 since it is clobbered by the trampoline code.
21706
21707 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21708
21709         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21710         pick up in-tree mscorlib.dll.
21711
21712 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21713
21714         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21715
21716         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21717         runtime data/code are now stored in a table similar to the GOT in ELF. 
21718         This allows the code itself to be position independent.
21719
21720         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21721         loading changes.
21722
21723         * aot.c: Attach ELF type (object/function) directives to all global
21724         symbols.
21725
21726         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21727
21728         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21729
21730         * mini-amd64.h: Turn on PIC AOT code.
21731
21732         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21733         returning the offset within an OP_AOTCONST instruction where the GOT
21734         offset needs to be added.
21735
21736         * mini.h: Bump AOT file format version.
21737
21738 2004-11-25  Martin Baulig  <martin@ximian.com>
21739
21740         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21741         uninflated generic methods.
21742
21743 2004-11-25  Martin Baulig  <martin@ximian.com>
21744
21745         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21746
21747 2004-11-24  Martin Baulig  <martin@ximian.com>
21748
21749         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21750         original klass (this only applies for generic instances).
21751
21752 2004-11-24  Martin Baulig  <martin@ximian.com>
21753
21754         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21755         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21756         that array).
21757
21758 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21759
21760         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21761         localloc. Fixes #69678.
21762
21763         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21764         
21765 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21766
21767         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21768         used SSE registers on pinvoke calls. Fixes #69774.
21769
21770 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21771
21772         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21773         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21774
21775 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21776
21777         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21778         Refer directly to the mcs/ tree.
21779
21780 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21781
21782         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21783         Check if a trampoline for a synchronized method is required. 
21784
21785 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21786
21787         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21788         with localloc if needed. Throe arithmetric exception in
21789         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21790         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21791
21792 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21793
21794         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21795         types before switching on type.  Fixes #69622.
21796
21797 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21798
21799         * Makefile.am (check-local): New.  Integrate into 'make check'.
21800         (MCS,RUNTIME): Define using in-tree mono and mcs.
21801         (ILASM): New.
21802         (%.exe): Use $(ILASM).
21803
21804 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21805
21806         * mini-ppc.c: adjust initial prolog size (bug #69691).
21807
21808 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21809
21810         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21811         #69664.
21812
21813 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21814
21815         * Makefile.am (clean-local): Rename from 'clean'.
21816
21817 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21818
21819         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21820         to mono_arch_is_int_overflow. 
21821         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21822         SIGFPE events.
21823
21824 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21825
21826         * declsec.c|h: New files to support declarative security attributes.
21827         Added function to check if a method has (applicable) security.
21828         * mini.c|h: Add check for declarative security attributes in
21829         mono_method_check_inlining.
21830         * Makefile.am: Added declsec.c and declsec.h to the build.
21831
21832 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21833
21834         * mini.c, mini.h: update to keep dynamic code info per-domain.
21835
21836 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21837
21838         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21839         (mini_init): Get rid of it from here too.
21840
21841 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21842
21843         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21844         implemented OP_RETHROW (patch by Geoff Norton
21845         <gnorton@customerdna.com>).
21846
21847 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21848
21849         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21850         between appdomains.  Fixes appdomain-unload on PPC.
21851
21852 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21853
21854         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21855         mini-exceptions.c: handle the new wrapper types.
21856         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21857         token value as a MonoClass* when compiling a wrapper.
21858         mono_jit_create_remoting_trampoline now takes an additional
21859         MonoRemotingTarget parameter.
21860         
21861 2004-11-10  Martin Baulig  <martin@localhost>
21862
21863         * mini.c (mono_method_to_ir): Use `generic_container->context'
21864         rather than creating a new one.
21865
21866 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21867
21868         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21869
21870         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21871
21872 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21873
21874         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21875         the experimental aot cache stuff.
21876
21877 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21878
21879         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21880         mini-exceptions.c: update to exception clause structure changes.
21881
21882 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * exceptions-x86.c (throw_exception): Fix warnings.
21885
21886         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21887         for OP_RETHROW.
21888
21889 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21890
21891         * exceptions-sparc.c (get_throw_exception): Really fix this.
21892
21893 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21894
21895         * tramp-*.c: we no longer support icalls without wrappers, so
21896         a bit of code can be removed here
21897
21898 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21899
21900         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21901         patch.
21902
21903         * cpu-sparc.md: Add op_rethrow.
21904
21905         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21906
21907         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21908
21909         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21910         * mini-ops.h: Add OP_RETHROW.
21911
21912         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21913
21914         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21915
21916 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21917         
21918         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21919         Makes the output much easier to read
21920
21921 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21922
21923         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21924         prevents another huge leak when compiling with ssa. Secondly, the
21925         performance of doing this rather than freeing the lists is much
21926         better. GList does a lock every time you allocate a list link,
21927         so that it can use a memory pool. So, it is better to just use
21928         a memory pool of our own.
21929         
21930         * ssa.c, linear-scan.c: replace g_list_remove_link with
21931         g_list_delete.  The remove one does not free the GList, so we were
21932         leaking memory. On -O=all --compile-all with corlib, this cut down
21933         3 MB of allocations.
21934
21935 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21936
21937         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21938
21939         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21940
21941         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21942         into a new function mono_create_jit_trampoline ().
21943
21944 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * trace.c (get_spec): Allow tracing of classes without a namespace.
21947
21948 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21949
21950         * mini.c: Fix pointer overwrite in mini_method_compile.
21951
21952 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21953
21954         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21955         The darwin ABI needs some special handling for 1 and 2 byte structs
21956         Lets use lbz/lhz instead of lwz everywhere.
21957         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21958         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21959         Use stb/sth for the former, and put the latter always on stack instead of in
21960         argument registers.
21961
21962 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * trace.c (is_filenamechar): Add '_'.
21965
21966 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21967
21968         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21969
21970         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21971
21972 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21973
21974         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21975         depends on libmonogc. Fixes #68805.
21976
21977 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21978
21979         * mini.c (mono_jit_free_method): Provide extra information for
21980         this error.  Currently this leaks, but will be turned into a
21981         developer option in the future.
21982
21983 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21984
21985         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21986
21987 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21990         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21991         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21992
21993 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21996         trampolines for AOT code.
21997
21998 2004-10-22    <vargaz@freemail.hu>
21999
22000         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
22001         constructed types. Fixes #68136.
22002
22003 2004-10-21  Martin Baulig  <martin@ximian.com>
22004
22005         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
22006         if it returns true, unwind the stack to the call instruction.
22007
22008 2004-10-21    <vargaz@freemail.hu>
22009
22010         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
22011
22012         * mini.h: Bump AOT version number.
22013
22014         * objects.cs: Add another test for unbox trampolines.
22015
22016         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
22017         valuetype methods.
22018
22019 2004-10-20    <vargaz@freemail.hu>
22020
22021         * driver.c: Add SHARED to the set of optimizations tested.
22022
22023         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
22024
22025         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
22026         used by CEE_NEWARR.
22027
22028         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
22029
22030 2004-10-20  Martin Baulig  <martin@ximian.com>
22031
22032         * mini-exceptions.c (mono_handle_exception): Call
22033         mono_debugger_handle_exception() to tell the debugger about
22034         catch/finally clauses.
22035
22036 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
22039
22040         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
22041         #68447.
22042
22043 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
22044
22045         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
22046         methods as their native size, fixed bug #57543, #57545.
22047         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
22048         This saves a temporary register and mullw call down into 1 (minor perf
22049         increase for cases like sum = sum * 5;  This use to translate into:
22050             li r11,5
22051             mullw r28,r28,r11
22052         It now translates to
22053             mulli r28,r28,5
22054
22055 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
22056
22057         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
22058         #68388.
22059
22060 2004-10-11  Martin Baulig  <martin@ximian.com>
22061
22062         * mini.c (mono_method_to_ir): If we're a generic method, get the
22063         MonoGenericContainer from our MonoMethodNormal and create a
22064         MonoGenericContext from it.
22065
22066 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
22069
22070         * basic-long.cs: Add test for checked i8->i2 cast.
22071
22072 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22073
22074         * inssel-ppc.brg: added a couple of speedup rules.
22075
22076 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
22079         to speed up rebuilds.
22080
22081 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22082
22083         * mini-s390.c: Minor fix to OP_OR_IMM.
22084
22085 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
22088         better. Fixes appdomain-unload.exe on sparc.
22089
22090 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22091
22092         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
22093         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
22094         see bug 67324.
22095
22096 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
22097
22098         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
22099
22100 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22101
22102         * mini.c: Always generate a field read/write wrapper for members
22103         of the class MarshalByRefObject since the actual instance could
22104         be a CBO.
22105
22106 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22107
22108         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
22109
22110 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22111
22112         * driver.c mini.h trace.c: Move the setting of the main assembly into
22113         a separate function called mono_trace_set_assembly () and call it after
22114         actually loading the main assembly. Fixes #66872.
22115
22116 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22117
22118         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
22119         using the code manager.
22120
22121 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22122
22123         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
22124
22125 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22126
22127         * cpu-amd64.md: Fix bug in previous patch.
22128         
22129         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
22130         #66650.
22131
22132 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
22133
22134         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22135         mini-exceptions.c: updates for changed stack walk interface.
22136
22137 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22138
22139         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
22140
22141 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
22144
22145 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * driver.c (mini_regression_list): Do not call mono_assembly_close 
22148         since assemblies can't be unloaded.
22149         
22150 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22151
22152         * cpu-amd64.md: Fix more instruction lengths.
22153
22154         * cpu-amd64.md: Fix lengths of some instructions.
22155
22156 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
22157
22158         * inssel.brg: Make the array ldelema check aot friendly.
22159
22160 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22161
22162         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
22163
22164         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
22165
22166 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * mini-x86.c: Fix build.
22169
22170         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
22171         mono_type_get_underlying_type () helper function to simplify code.
22172         
22173 2004-09-09  Martin Baulig  <martin@ximian.com>
22174
22175         * mini-amd64.c: Don't access `type->data.klass' directly, call
22176         mono_class_from_mono_type() instead since the type may be a
22177         generic instance.
22178
22179 2004-09-09  Martin Baulig  <martin@ximian.com>
22180
22181         * mini-amd64.c (get_call_info): Fix support for generic instances.
22182         (add_valuetype): Use mono_class_from_mono_type() to get the class
22183         since we can be a generic instance.
22184
22185 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
22186
22187         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22188
22189 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22190
22191         * liveness.c: reset spill costs on each scan: bug 62107
22192
22193 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22194
22195         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22196         unnecessary line that doesn't compile
22197
22198 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22199
22200         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22201         trampolines, make them call an error function so people can fix their
22202         code.
22203
22204 2004-09-06  Martin Baulig  <martin@ximian.com>
22205
22206         * mini.c (mono_method_to_ir): When initializing locals, handle a
22207         generic instances like a valuetype if it's a valuetype and like a
22208         class if it's a class.
22209
22210 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22211
22212         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22213         stack. Fixes #64674.
22214
22215         * exceptions.cs: Add test for unwinding of call arguments.
22216
22217 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22218
22219         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22220         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22221         set the carry/borrow flag). The sparc and s390 implementations
22222         can now use optimized versions (and simplify the code). ppc bugfixes.
22223
22224 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22227
22228 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22229
22230         * inssel-amd64.brg: Remove leftover 32 bit rule.
22231
22232         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22233
22234 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22235
22236         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22237         mono_arch_find_jit_info functions into a new function. Fix a memory
22238         leak.
22239
22240         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22241         refactored code.
22242         
22243 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22244
22245         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22246         as well.
22247         
22248         * exceptions.cs: Add array size tests.
22249
22250         * mini.c: Allocate a separate icall wrapper for each arity of 
22251         mono_array_new_va. Fixes #59509.
22252
22253         * exceptions.cs: Add testcase for 64578.
22254
22255         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22256
22257         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22258         
22259 2004-09-02  Martin Baulig  <martin@ximian.com>
22260
22261         * mini.c (mono_method_to_ir): When initializing the locals, call
22262         handle_initobj() on the generic instance itself, not its
22263         underlying type.
22264
22265 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22266
22267         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22268         MonoJitInfo for dynamic methods.
22269
22270         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22271
22272         * mini.c: Add support for freeing JIT data for dynamic methods.
22273         
22274 2004-09-01  Martin Baulig  <martin@ximian.com>
22275
22276         * mini-x86.c (is_regsize_var): Added support for generic
22277         instances.
22278         (mono_arch_emit_prolog): Make this compile again, use
22279         `x86_push_imm_template (code)'.
22280
22281 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22282
22283         * mini-x86.c: make all push_imm instructions that get
22284         patched always emit the long form
22285
22286 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22287
22288         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22289         in a per-domain hash.
22290
22291         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22292         types.
22293
22294 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22295
22296         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22297         work.
22298         
22299         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22300         work.
22301
22302         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22303         Beginnings of SSE2 support.
22304
22305         * exceptions.cs: Add more tests for checked int<->uint casts.
22306
22307 2004-08-28  Martin Baulig  <martin@ximian.com>
22308
22309         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22310         generic instances.
22311
22312         * mini.c
22313         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22314         Handle generic instances recursively.
22315
22316 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22317
22318         * iltests.il: test for conv.u8 on a constant
22319
22320 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22321
22322         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22323         LCONV_x4 (shrun_32 (membase)).
22324
22325 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22326
22327         * inssel-x86.brg: c&p rules for push/setret of long
22328
22329 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22330
22331         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22332         compare (regvar, base)
22333
22334         * inssel-x86.brg: more burg love
22335
22336         * inssel.brg: more cleanup
22337
22338         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22339
22340 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22341
22342         * basic-long.cs, basic-calls.cs: new tests for optimization.
22343
22344 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22345
22346         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22347         patch.
22348
22349 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22352         
22353 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22354
22355         * inssel.brg (mini_emit_memcpy): use 
22356         NO_UNALIGNED_ACCESS to disable memcpy optimization
22357
22358 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22359
22360         * mini-amd64.c: Handle generic types in various places.
22361
22362         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22363
22364 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22365
22366         * mini.c (handle_box): Fix warning.
22367
22368         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22369
22370         * mini-amd64.h: Enable the emit_state optimization.
22371
22372         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22373
22374         * mini-amd64.c: Add some new 64 bit peephole opts.
22375
22376         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22377
22378         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22379
22380         * mini-amd64.c: Register allocator fixes.
22381
22382         * mini.c: Add an optimization to emit_state to avoid allocation of new
22383         registers on some platforms.
22384
22385 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22386
22387         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22388
22389         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22390         allocation. Fixes #63085.
22391
22392         * basic-long.cs: Add new regression test.
22393
22394         * mini-amd64.c: Register allocator improvements.
22395
22396 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22397
22398         * mini-amd64.c (read_tls_offset_from_method): Add another code
22399         sequence.
22400
22401         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22402         instruction sequence for nullifying class init trampolines.
22403
22404         * objects.cs: Add new regalloc test.
22405
22406         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22407
22408 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22409
22410         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22411         
22412         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22413         arguments.
22414
22415         * driver.c: Fix profiling after TLS changes.
22416         
22417         * driver.c (mono_main): Set mono_stats.enabled if needed.
22418
22419         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22420         CEE_BOX.
22421
22422 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22423
22424         * mini-x86.c: use a 1 op rather than a 2 op tls access
22425         instruction -> faster.
22426
22427 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22428
22429         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22430         x86 backend.
22431
22432 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22433
22434         * exceptions-sparc.c (throw_exception): fix typo
22435
22436 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22437
22438         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22439         set tree->dreg correctly with tls. Allow any
22440         register to be used.
22441
22442         * mini-x86.c (read_tls_offset_from_method): add new code
22443         generation pattern seen with GCC.
22444
22445
22446 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22447
22448         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22449         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22450         exceptions-sparc.c: fix some performance issues in exception
22451         handling and setting of the stack trace for exceptions that were
22452         already thrown.
22453
22454 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22455
22456         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22457         x86 backend.
22458         
22459         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22460         registers.
22461
22462 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22463
22464         This patch inlines tls access, when possible.
22465         
22466         * mini.h: new arch functions for TLS intrinsics.
22467         All platforms updated with a stub.
22468
22469         * mini.c: use the new intrinsics
22470
22471         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22472         arch specific intrinsic for tls variables
22473
22474 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22477         under windows.
22478
22479 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22480
22481         * mini.c: thread local allocation
22482
22483 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22484
22485         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22486
22487         * Makefile.am: Link against the static version of libmonogc.
22488         
22489         * Makefile.am: Link the static versions of the convenience libraries
22490         into the mono executable.
22491
22492         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22493
22494 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22495
22496         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22497         on integer overflow.
22498
22499         * mini-amd64.c: Reorganize function call code.
22500
22501         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22502
22503 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22504
22505         * inssel-x86.brg: use xor eax,eax.
22506         
22507         * basic.cs: new tests
22508
22509 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22512         in exception throwing code.
22513         
22514 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22515
22516         * inssel-x86.brg: use xor esi,esi.
22517
22518 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22519
22520         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22521         can trace methods compiled during mini_init () too.
22522
22523         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22524         CEE_CONV_U4.
22525
22526 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22527
22528         * Makefile.am: static link on x86 (r=zoltan)
22529
22530 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22533         code since it causes some programs to fail.
22534
22535 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22536
22537         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22538
22539 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22540
22541         * mini.c: ovfops_op_map - add STACK_OBJ case for
22542         CONV_I 
22543         * basic.cs: add test_0_pin_string as test
22544         case for above.
22545
22546 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22547
22548         * Makefile.am: build C# if srcdir != builddir
22549
22550 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22551
22552         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22553         fall-through blocks.
22554
22555 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22556
22557         * driver.c: enable loop by default again and include abcrem in -O=all.
22558
22559 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22560
22561         * iltests.il: Add some localloc tests.
22562
22563         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22564
22565         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22566         Fixes #62574.
22567
22568         * inssel-amd64.brg: Add some optimizations.
22569
22570         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22571         for gcc-3.4.
22572
22573         * Makefile.am: Statically link mono against libmono on AMD64.
22574         
22575         * mini-amd64.c inssel-amd64.brg: Optimizations.
22576
22577 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22578
22579         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22580
22581         * tramp-amd64.c: Patch calling code in trampolines.
22582
22583 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22584
22585         * mini-amd64.c: pinvoke struct passing fixes.
22586
22587 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22588
22589         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22590         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22591
22592 2004-08-05  Duncan Mak  <duncan@ximian.com>
22593
22594         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22595         CEE_LDELEM_ANY.
22596
22597 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22598
22599         * mini-amd64.c (emit_move_return_value): Move return value for normal
22600         calls too.
22601
22602 2004-08-05  Martin Baulig  <martin@ximian.com>
22603
22604         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22605         `type->type'; just modify `type' itself when dealing with enums
22606         and generic instances.
22607         (check_call_signature): Make `simple_type' a `MonoType *'.
22608
22609 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * mini.c: Use OP_PADD to add offsets to addresses.
22612
22613         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22614
22615 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22616
22617         * mini-sparc.c (mono_arch_emit_epilog): fix check
22618         for folding last op into restore instruction
22619
22620 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22623         helper methods using the code manager.
22624         
22625         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22626
22627         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22628
22629 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22630         
22631         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22632           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22633
22634         * mini-s390.c: fix tail processing
22635
22636 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22637
22638         * mini-ppc.c: mul.ovf.un exception name fix.
22639
22640 2004-08-03  Martin Baulig  <martin@ximian.com>
22641
22642         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22643         instances; before jumping to `handle_enum', also modify `ptype'.
22644
22645 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22646
22647         * cpu-sparc.md: fcall maximal length too small.
22648
22649 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22650
22651         * mini-amd64.c mini.h: Add initial support for passing/returning 
22652         structures to/from pinvoked methods.
22653
22654 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22655
22656         * mini-ppc.c: reg allocator fix.
22657
22658 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22659
22660         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22661
22662         * inssel.brg: Optimize memset on 64 bit machines.
22663
22664         * mini-amd64.c: Fix some vararg cases.
22665
22666 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22667
22668         * mini-s390.c: Corrected macro in emit_float_to_int
22669
22670         * s390-abi.cs: Tests to exercise the s390 ABI
22671
22672 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22673
22674         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22675         caller saved regs.
22676
22677         * basic.cs: Add a test for add.ovf.un.
22678
22679 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22680
22681         * mini-sparc.c: add case for OP_IDIV_UN
22682
22683 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22684
22685         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22686         
22687         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22688
22689 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22690
22691         * basic.cs: regression tests.
22692
22693         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22694         regressions.
22695
22696 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22697
22698         * basic.cs: Add a new test.
22699
22700         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22701         and AOT. Various fixes and optimizations.
22702
22703         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22704
22705 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22706
22707         * mini-ppc.c: make sure temp regs are not used for global reg
22708         allocation.
22709
22710 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22711
22712         * cpu-sparc.md: conv_i8 fix for 64bits
22713
22714         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22715
22716 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22717         
22718         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22719         add opcode for cmp BYTE PTR [eax], imm.
22720
22721         * inssel.brg: Make memcpy and memset takes bases.
22722
22723 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * *-amd64.*: More AMD64 work.
22726         
22727 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22728
22729         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22730         add a compare-not-equal opcode.
22731         
22732 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22733
22734         * mini.c: Use mono_init_from_assembly instead of mono_init.
22735         
22736 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22737
22738         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22739
22740         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22741
22742         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22743
22744         * inssel.brg: 64 bit fixes.
22745
22746         * mini.h (MonoCallInst): Add some AMD64 specific data.
22747
22748         * mini.h: Add some OP_P opcodes.
22749
22750 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22751
22752         * basic.cs: tests for 61797 and 61740
22753
22754 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22755
22756         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22757         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22758
22759 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22760
22761         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22762
22763         * *-amd64*.*: Ongoing AMD64 work.
22764
22765 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22766
22767         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22768
22769         * *-amd64*: Ongoing AMD64 work.
22770
22771         * mini-arch.h: Add AMD64 support.
22772
22773         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22774
22775         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22776
22777         * mini-ops.h: Add new opcodes.
22778
22779         * Makefile.am: Add AMD64 support.
22780
22781         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22782         rules into the inssel-long*.brg files.
22783
22784         * *-amd64.*: Add beginnings of AMD64 backend.
22785
22786 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22787
22788         * mini.c (print_dfn): commenting out the code that prints
22789         the cil. With -O=deadce, this makes -v -v crash.
22790         
22791         * cpu-pentium.md: make checkthis have a length of 2
22792
22793 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22794
22795         * mini-sparc.h: fix implementations of __builtin
22796         functions for Sun compiler for V9.
22797
22798 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22799
22800         * mini.c: use the new stelem.ref wrapper
22801         * exceptions.cs, arrays.cs: new stelem.ref tests
22802
22803 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22804
22805         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22806         new XSP should work with these changes).
22807
22808 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22809         
22810         * inssel-{long32,x86,}.brg: trivial optimizations.
22811         
22812 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22813
22814         * mini.c: load value when emitting box operation in
22815         constrained calls.
22816
22817 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22818
22819         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22820         is one byte shorter than cmp DWORD PTR [eax], 0.
22821
22822 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22823
22824         * inssel-ppc.brg: arguments on the stack are always
22825         relative to the stack pointer (spotted by Neale Ferguson).
22826
22827 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22828
22829         * exceptions-x86.c: delay appending the method name to the trace until
22830         after mono_jit_info_table_find is called, as this gets the real
22831         MonoMethod.
22832
22833 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22834
22835         * aot.c: register roots
22836
22837 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22838
22839         * aot.c : I could just use PLATFORM_WIN32 flag.
22840
22841 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22842
22843         * aot.c : Reverting the previous fix. This time it broke linux build.
22844
22845 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22846
22847         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22848
22849 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22850
22851         * mini.c (handle_stack_args): Remove some more debugging code.
22852         
22853         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22854
22855         * driver.c mini.h aot.c: Allow additional options to be specified with
22856         --aot and pass them to mono_compile_assembly.
22857
22858         * aot.c: Add experimental code to AOT compile all loaded assemblies
22859         on demand and save the code into a cache in the filesystem.
22860
22861         * aot.c: Add support for more wrapper methods.
22862         
22863         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22864         58863.
22865
22866         * cpu-*.md: Remove removed opcodes.
22867
22868         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22869         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22870         related icalls to marshal.c.
22871
22872 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22875
22876         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22877
22878         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22879
22880 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22881         * liveness.c: If liveness is recomputated we need to reset the information
22882         for each variable. This way, if the liveness range has been narrowed
22883         by optimizations that happened after the last computation, we can return
22884         a smaller range.
22885         
22886         For example, if you have
22887         
22888         {
22889                 int i = 0;
22890                 
22891                 // Tons of code that does not affect i
22892                 
22893                 i = foo ();
22894                 ...
22895         }
22896         
22897         i = 0 is dead code and will be removed by SSA. However, when
22898         linear scan gets to the code, i will still appear to be live
22899         throughout the entire block. This prevents good register allocation.
22900
22901 2004-07-06  Martin Baulig  <martin@ximian.com>
22902
22903         * debug-mini.c (mono_debug_init_method): Allow
22904         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22905         (mono_debug_add_icall_wrapper): New method.
22906
22907         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22908
22909 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22910
22911         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22912         optimization.
22913
22914 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22915
22916         * aot.c (mono_aot_load_method): Fix loading of debug info.
22917
22918 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22919
22920         * aot.c: Add logging support.
22921
22922 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22923
22924         * mini.h: Add prototype for mono_print_method_from_ip.
22925
22926         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22927
22928         * inssel.brg: 64 bit fixes.
22929
22930         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22931         inssel-long32.brg.
22932
22933         * Makefile.am: Add SPARC64 support.
22934
22935 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * aot.c: Fix alignment problems on 32 bit platforms.
22938
22939 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22940
22941         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22942         SPARC64.
22943
22944         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22945         problems.
22946
22947         * mini.h: Bump AOT file version. Some 64 bit fixes.
22948
22949 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22950
22951         * inssel-sparc.brg: Add new rule to avoid register moves.
22952
22953         * inssel.brg: Add ldind_to_load_membase helper function.
22954
22955 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22956
22957         * mini.c: OffsetToStringData intrinsic.
22958         
22959 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22962
22963         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22964         regression tests.
22965
22966         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22967 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22968
22969         * mini.c: reinstated mono_compile_get_interface_var()
22970         on x86, too, since the change breaks the Gtk# build there as well.
22971
22972 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22973
22974         * driver.c: remove loop from the default optimizations: it seems to
22975         interact badly with some of the other options (see bug #60613).
22976
22977 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22978
22979         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22980         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22981
22982 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22983
22984         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22985         vararg-using methods.
22986
22987 2004-06-21  Martin Baulig  <martin@ximian.com>
22988
22989         * mini/mini-exceptions.c
22990         (mono_handle_exception): Added `gpointer original_ip' argument.
22991         After calling mono_unhandled_exception(), call
22992         mono_debugger_unhandled_exception() and if that returns true,
22993         restore the context and return.
22994
22995 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22996
22997         * mini-ppc.c: prefer the use of relative branches so
22998         they won't need to be patched in aot code (patch from Patrick Beard).
22999
23000 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23001
23002         * aot.c: patch from Patrick Beard to make the output assembly
23003         more correct for the MacOSX assembler. Small tweak to
23004         generate sane images on Linux/PPC, too.
23005
23006 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23007
23008         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
23009         case until bug #59509 is fixed (shows up in #60332).
23010
23011 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23012
23013         * mini.c: make sure the needed wrappers are compiled, too, with
23014         precomp.
23015
23016 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
23017
23018         * driver.c: remove NPTL reference in --version output.
23019
23020 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23021
23022         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
23023         generate valid assembly for the Mach-O assembler.
23024
23025 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23026
23027         * driver.c: don't include abcrem in the all optimization specifier
23028         since it slows down jit compilation too much for now.
23029
23030 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
23031
23032         * mini.c: use BIGMUL only if both operands have the same signage.
23033         * iltests.il: Test for bug 60056. (errors related to signage in
23034         BIGMUL).
23035
23036         r=lupus.
23037
23038 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
23039
23040         * mini.c, aot.c: memory leak fixes.
23041
23042 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23043
23044         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
23045
23046 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
23047
23048         * Makefile.am: remove the -static hack completely, it links in
23049         statically glib as well.
23050
23051 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
23052
23053         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
23054         * exceptions.cs: make it compile with new mcs/csc.
23055
23056 2004-06-03 Massimiliano Mantione <massi@ximian.com>
23057         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
23058         and added relevant test case.
23059
23060 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23061
23062         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
23063         regressions in gtk-sharp.
23064
23065 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
23066
23067         * exceptions.cs: New regression tests.
23068
23069         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
23070
23071 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23072
23073         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
23074
23075 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
23076
23077         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
23078
23079         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
23080
23081 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
23082
23083         * mini.c (mono_jit_runtime_invoke): Init class in this
23084         method instead of trusting mono_jit_compile_method to
23085         do the work (because wrappers can be in object class)
23086
23087 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
23088
23089         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
23090
23091         * basic-long.cs: New regression test.
23092
23093 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
23094
23095         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
23096         and div/rem checks.
23097
23098 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23099
23100         * Makefile.am: fix miguel's change to build mono statically against
23101         libmono (track build dependencies).
23102
23103 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23104
23105         * cfold.c: Some glib versions do not have G_MININT32.
23106
23107 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
23108
23109         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
23110         with precision of tan, atan, sin and cos, and implemented related
23111         regressions tests (fixes bug 54467, but one new problem appeared and
23112         is not fixed yet).
23113
23114 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
23115
23116         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
23117
23118         * exceptions.cs: Add test for constant folding && division by zero.
23119
23120         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
23121         since driver.c is in libmono too, so the optimization was useless.
23122
23123         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
23124         variable to driver.c so the compiler can emit more efficient code to
23125         access them.
23126
23127 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23128
23129         * Makefile.am: don't distribute generated inssel.[ch] files.
23130
23131 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
23132
23133         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
23134         into the default appdomain. Fixes #58707.
23135
23136         * jit-icalls.c: Remove the broken approximation for truncl, doing
23137         no conversion is better.
23138
23139         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
23140         Fixes #58863.
23141
23142 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23143
23144         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
23145         of the mcrxr instruction which is not available on some processors
23146         even if it's documented to be. Implement add and sub overflow correctly
23147         (still not complete for long unsigned). Speed up icalls a bit.
23148
23149 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
23150
23151         * mini.c (mono_jit_compile_method_with_opt): Make sure that
23152         we run .cctor in the current domain instead of target_domain.
23153         
23154         Fixes bug #58558, .cctor not being called in -O=shared.
23155
23156 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23157
23158         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
23159
23160 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
23161
23162         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
23163         which can be done with an imm8, do it that way.
23164         (mono_arch_output_basic_block): ditto for a jmp
23165         (mono_arch_emit_prolog): Computate maximum offset of a label.
23166
23167 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
23168
23169         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
23170         now tries to allocate prefered physical reg's for virtual
23171         regs. This reduces the number of emited spills/loads with
23172         20-30% on our core assemblies.
23173
23174 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23175
23176         * jit-icalls.c: truncl() is not needed and trunc() is
23177         the correct thing to do anyway (bug #58287).
23178
23179 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
23180
23181         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
23182         if available.
23183
23184 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23185
23186         * driver.c: enable loop optimizations by default.
23187
23188 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23189
23190         * mini-x86.c: fix calc of max loop size when aligning loops start.
23191
23192 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23193
23194         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23195         the stack.
23196
23197 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23198
23199         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23200         should set carry.
23201
23202         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23203
23204         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23205         
23206         * mini.c (inline_method): Allways inline some wrappers even if the cost
23207         is too large. Fixes #58785.
23208
23209         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23210         
23211 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23212
23213         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23214         (crichton@gimp.org). Beginning of support for sparc/linux.
23215
23216         * mini-sparc.c: Optimize retrieval of LMF address.
23217
23218 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23219
23220         * exceptions-ppc.c:  handle alloca in methods with clauses.
23221
23222 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23223
23224         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23225
23226 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23227
23228         * mini.c: Delegate most of the abort signal work to 
23229           mono_thread_request_interruption, which also handles Stop and Suspend
23230           states.
23231
23232 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23235         supports the save/restore lmf opcodes.
23236
23237 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23238
23239         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23240         by gcc-3.4 as well.
23241
23242         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23243
23244 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23245
23246         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23247         methods which contain array accesses.
23248
23249         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23250         boundaries. Fixes #58537.
23251
23252         * iltests.il: Add regression test for #58537.
23253
23254 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23255
23256         * mini-x86.c (mono_arch_local_regalloc): Last part of
23257         fix for bug #58633 (releasing register to early).
23258
23259 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23260
23261         * basic-long.cs: Add new regression test.
23262
23263 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23264
23265         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23266         register too early on the chain.
23267
23268 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23269
23270         * mini.c (create_helper_signature): Use a helper function to reduce
23271         the code which needs to be written. Also set the calling convention of
23272         icalls on windows. Fixes #57840.
23273
23274 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23275
23276         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23277         exceptions-ppc.c: added helper function to get the instruction address
23278         from a signal handler context.
23279
23280 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23281
23282         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23283         from gonzalo.
23284
23285 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23286
23287         * helpers.c: Add new env variable to pass args to objdump.
23288         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23289
23290 2004-05-17  Radek Doulik  <rodo@ximian.com>
23291
23292         * Makefile.am (common_sources): added abcremoval.h so it get
23293         disted and daily mono packages on go-mono.com will build again
23294
23295 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23296
23297         * abcremoval.c: Fixed coding style, added copyright header.
23298
23299         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23300
23301         * mini.h: Added prototype for abc removal main function.
23302
23303         * build_relations_propagation_table.pl: Added copyright header.
23304
23305 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23306
23307         * basic-long.cs: reg test for complex ceq_long bug.
23308
23309 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23310
23311         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23312         reg in long and clob case (bug #58343). Fixed/added comments.
23313
23314 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23315
23316         * mini.c (mono_jit_runtime_invoke): Follow new convention
23317         of calling the invoke method with an function pointer.
23318
23319 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23320
23321         * ChangeLog: Fix author of memory leak patch.
23322
23323 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23324
23325         * Makefile.am: fix make dist as well...
23326
23327
23328 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23329
23330         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23331         on archs where pointers are 4 bytes long.
23332
23333         * Makefile.am: Added abcremoval.c source file.
23334
23335         * abcremoval.c: Added abcremoval.c.
23336
23337         * abcremoval.h: Added abcremoval.h.
23338
23339         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23340
23341         * inssel.brg: Enabled bounds check removal.
23342
23343         * mini.c: Added support for abcrem optimization.
23344
23345         * mini.h: Added abcrem optimization label.
23346
23347         * driver.c: Added support for abcrem optimization.
23348
23349         * propagated_relations_table.def: Added propagated_relations_table.def.
23350
23351 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23352
23353         * mini.c, cfold.c: fix style.
23354
23355 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23356
23357         * mini.c: handle issue with the low-level implementation of
23358         some long opcodes (bug #54209).
23359
23360 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23361
23362         * basic.cs: test for my new cmov stuff.
23363
23364 2004-05-13      Patrik Torstensson
23365
23366         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23367         opt and added peephole documentation.
23368
23369 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23370
23371         * tramp-ppc.c: rewrote the generic trampoline code.
23372
23373 2004-05-11      Patrik Torstensson
23374
23375         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23376
23377 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23378
23379         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23380
23381         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23382         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23383
23384         * mini.c: Add new icalls for AsAny marshalling.
23385
23386 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23387
23388         * tramp-ppc.c, mini-ppc.c: more cleanups.
23389
23390 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23391
23392         * mini.c: no warnings.
23393
23394 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23395
23396         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23397
23398 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23399
23400         * mini.c: In the thread abort signal handler, if the thread is in the
23401         process of being stoped, don't throw the Abort exception, just stop the
23402         thread.
23403
23404 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23405
23406         * tramp-ppc.c: removed old code.
23407
23408 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23409
23410         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23411         do some simple speed optimizations on ppc.
23412
23413 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23414
23415         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23416         and large offsets in load/store.
23417
23418 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23421         it causes regressions.
23422
23423 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23424
23425         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23426         support.
23427
23428 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23429
23430         * jit-icalls.c: remove warnings.
23431         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23432         speedups for unsafe code.
23433
23434 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23435
23436         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23437
23438 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23439
23440         * basic-calls.cs: Add new regression test.
23441
23442         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23443         more portable.
23444
23445         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23446
23447         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23448         is no longer used.
23449
23450 2004-05-06      Patrik Torstensson
23451
23452         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23453         long reg allocation in any reg (not only eax:edx) and implemented 
23454         long shl/shr ops in asm instead of helpers.
23455
23456 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23457
23458         * mini-sparc.h: Fix warnings.
23459
23460         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23461         stack.
23462
23463         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23464         separate statement for clarity.
23465
23466         * mini-sparc.c: Update status.
23467
23468 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23469
23470         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23471         here.
23472
23473 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23474
23475         * inssel-ppc.brg: another small pre-release workaround:
23476         we don't do overflow detection for long_sub_un.
23477
23478 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23479
23480         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23481         (also works around a weird ppc bug: 57957).
23482
23483 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23484
23485         * tramp-ppc.c: trampoline fixes.
23486
23487 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23488
23489         * mini-ppc.c: fixed typos.
23490
23491 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23492
23493         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23494         at the top of the stack. Fixed typos. Use a frame registers
23495         for all the methods with exception clauses.
23496
23497 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23498
23499         * exceptions-ppc.c: restore fp registers.
23500
23501 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23502
23503         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23504         order from the stack top (moved the stack room to save the
23505         return value for trace after the param area). Fixed corruption
23506         in restoring registers on unwind.
23507
23508 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23509
23510         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23511
23512 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23513
23514         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23515         and prolog/epilog for methods that use it. Allow
23516         enough param area room for varargs methods. Fix miguel's
23517         breakage in exception handling.
23518
23519 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23520
23521         * Makefile.am: run genmdesc only on current arch.
23522
23523 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23524
23525         * exceptions-x86.c:
23526         * mini-x86.h: fix the build on windows.
23527
23528 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * 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.
23531
23532         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23533
23534         * mini-exceptions.c: New file.
23535         
23536         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23537         Move some parts of the x86 exception handling code to an 
23538         arch-independent file so it can be shared with other ports.
23539
23540 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23541
23542         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23543
23544 2004-04-26  David Waite  <mass@akuma.org>
23545
23546         * driver.c: remove comma from end of enumeration declaration
23547
23548 2004-04-26  Jackson Harper  <jackson@ximian.com>
23549
23550         * driver.c: parse config file before loading first assembly. This
23551         allows the user gac to be enabled/disabled. 
23552         
23553 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23554
23555         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23556         simpler mechanism: we do not care what is encoded initially
23557         (branch absolute or relative), we care about the code and its
23558         target.  I kept the old code for reference for now.
23559
23560         The new code tries first to determine if the jump is anywhere in
23561         the -/+32 absolute meg range, if it succeeds, it encodes using the
23562         absolute branch;  If not, it tried to find something in the
23563         relative range, if not, it uses the handle_thunk code. 
23564
23565 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23566
23567         * exceptions-ppc.c: use the correct ip register on macosx.
23568
23569 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23570
23571         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23572
23573 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23574
23575         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23576         Raise exception on integer divide by zero by hand since the hw
23577         doesn't support it. Handle NaNs in FP compares.
23578
23579 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23580
23581         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23582         code reducing duplication between the platforms and enabled
23583         signal exception handling (on linux for now).
23584
23585 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23586
23587         * exceptions-ppc.c: more macosx support.
23588
23589 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23590
23591         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23592
23593 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23594
23595         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23596
23597 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23598
23599         * iltests.il: more tests.
23600
23601 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23602
23603         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23604         vars as well.
23605
23606 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23607
23608         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23609
23610 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23611
23612         * liveness.c: Mark variables as volatile in all basic blocks reachable
23613         from exception clauses.
23614
23615 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23616
23617         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23618         inlining.
23619
23620 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23621
23622         * iltests.il, basic.cs: more tests for regalloc.
23623
23624 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23625
23626         * iltests.il: Some tests for register allocation modifications
23627         I have locally.
23628
23629 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23630
23631         * exceptions.cs: Add regression test for bug #56782.
23632
23633         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23634         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23635         the beauty of fixing the same thing in 5 different files...
23636
23637 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23640         methods.
23641
23642 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * mini.c: Add support for STRWLPARRAY marshalling convention.
23645
23646 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23647
23648         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23649         to init the context to setup the regs pointer).
23650
23651 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23652
23653         * exceptions-ppc.c: more exceptions work.
23654
23655 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23656
23657         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23658         not allowed.
23659
23660 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23661
23662         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23663         can use the memory directly.
23664
23665         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23666
23667         add x86_add_membase, x86_sub_membase, x86_mul_membase
23668
23669 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23670
23671         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23672         GENERAL_REGS they were also hardcoded for all PPC ports.
23673
23674         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23675
23676         Remove hard-coded limit for floating point registers, use
23677         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23678
23679         Notice that in MacOS X calling conventions you can fit a lot more
23680         floating point values in registers, so I should update the PInvoke
23681         test to excercise the passing of floating point values on the
23682         stack (currently broken).
23683         
23684 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23685
23686         * tramp-ppc.c (create_trampoline_code): Added
23687         JUMP_TRAMPOLINE_SIZE. 
23688         (ppc_magic_trampoline): Follow the pattern from
23689         x86_magic_trampoline: if code is set to zero, return. 
23690         (create_trampoline_code): Always pass MonoMethod to the jump
23691         trampoline, before it was passing a null.
23692         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23693         share the code with mono_arch_create_jit_trampoline. 
23694
23695         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23696         implemented.
23697         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23698         implemented.  
23699
23700         * cpu-g4.md: Added length for jmp instruction, the worst case
23701         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23702         for save_lmf).
23703
23704 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23705
23706         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23707
23708 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23709
23710         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23711         before each IL instruction.
23712
23713         * mini.c (CEE_BOX): Fix warnings.
23714
23715 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23716
23717         * mini.c: removed a few unused vars and extra whitespace.
23718
23719 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23720
23721         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23722         checks.
23723         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23724         index.
23725         (OP_GETCHR): use the above
23726         (CEE_LDELEMA): use the above.
23727
23728         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23729         version of the generic impl.
23730         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23731         (CEE_LDELEMA): use the above.
23732
23733 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23736         Fixes #56317.
23737
23738         * iltests.il: Added new regression test for #56317.
23739
23740 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23741
23742         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23743         under NetBSD. Fixes #56450.
23744
23745         * liveness.c (update_gen_kill_set): Fix previous patch.
23746
23747 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23748
23749         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23750
23751 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23752
23753         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23754         ldsfld and ldsflda.
23755
23756         * inssel-sparc.brg: Add more optimizations.
23757
23758         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23759
23760 2004-04-01  Martin Baulig  <martin@ximian.com>
23761
23762         * mini.c (handle_box): New static function; moved the
23763         implementation of CEE_BOX here.
23764         (mono_method_to_ir): Added `constrained_call' variable.
23765         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23766         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23767         mono_method_get_constrained() to get the method.
23768
23769 2004-04-01  Martin Baulig  <martin@ximian.com>
23770
23771         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23772         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23773         (mono_method_to_ir): We don't need these macros anymore since
23774         mono_class_get_full() already takes care of it. 
23775
23776 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23777
23778         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23779         use @function (as doesn't accept #function here) and check the return
23780         value of system and stop if fails.
23781
23782 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23783
23784         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23785
23786 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23787
23788         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23789
23790         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23791
23792         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23793         #56223.
23794
23795         * basic-long.cs: Add test for negation of Int64.MinValue.
23796
23797 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23798
23799         * mini-sparc.c: Update status.
23800
23801         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23802
23803         * exceptions-sparc.c: Fix return value in filters.
23804
23805         * inssel-sparc.brg: Fix register allocation in some rules.
23806
23807 2004-03-28  Martin Baulig  <martin@ximian.com>
23808
23809         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23810         if neccessary.  
23811
23812 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23813
23814         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23815         
23816         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23817         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23818         remove unused conv_u4 opcode.
23819
23820         * mini-x86.c: Remove valgrind workaround since it slows down things
23821         even when mono is not run under valgrind.
23822
23823 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23824
23825         * mini-sparc.c: Update status.
23826
23827         * inssel-sparc.brg: Add some optimizations.
23828
23829         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23830         future delay slot filling. Add support for varargs, tail calls and JMP.
23831
23832         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23833         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23834
23835         * inssel.brg: Fix register allocation in OP_ARGLIST.
23836
23837         * inssel.brg: Fix warnings.
23838
23839 2004-03-25  Martin Baulig  <martin@ximian.com>
23840
23841         * mini.c (inflate_generic_field): Removed.
23842         (mini_get_method): Removed, use mono_get_method_full(),
23843         (mini_get_class): Removed, use mono_class_get_full().
23844         (mono_method_to_ir): Pass our generic context to
23845         mono_field_from_token().        
23846
23847 2004-03-25  Martin Baulig  <martin@ximian.com>
23848
23849         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23850         of a `MonoMethod *'.
23851         (mini_get_method): Take a `MonoGenericContext *' instead
23852         of a `MonoMethod *'.
23853         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23854         a new local variable called `generic_context' which holds the
23855         current `MonoGenericContext *'; use it to lookup things.
23856
23857 2004-03-24  Martin Baulig  <martin@ximian.com>
23858
23859         * mini.c (mini_get_class): New static method; if we're inside a
23860         generic instance, inflate the class if neccessary.
23861         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23862
23863 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23864
23865         * iltests.il: New regression test for #55976.
23866
23867         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23868         #55976.
23869
23870 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23873         output.
23874
23875 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * liveness.c: Consider SSA stores as well as loads when making vars
23878         volatile.
23879
23880         * exceptions.cs: New regression tests for register allocation.
23881         
23882 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23883
23884         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23885         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23886           domain lock only to protect puntual access to data structures.
23887           Added access lock for sighash, jit_icall_hash_name, 
23888           jit_icall_hash_addr and domain->code_mp.
23889
23890 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * driver.c: Print SIGSEGV handling method.
23893
23894         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23895
23896         * mini.c (setup_jit_tls_data): Handle case when this is called
23897         multiple times for a thread.
23898
23899         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23900         is different from fbxx_un. Fixes #54303. Also use constants instead of
23901         magic numbers in a lot of places.
23902
23903 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * exceptions.cs: Fix cctor test when --regression is used.
23906
23907 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23908
23909         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23910         for Linux/ppc.
23911
23912 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23913
23914         * inssel-ppc.brg: fixed register assignments for some rules.
23915
23916 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * exceptions.cs: Add test for exceptions in static constructors.
23919
23920         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23921         static constructors outside the domain lock. Fixes #55720.
23922
23923 2004-03-17  Martin Baulig  <martin@ximian.com>
23924
23925         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23926         (inflate_generic_field): Take the `MonoMethod *' instead of the
23927         `MonoClass *' and added support for generic method.
23928         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23929         have a `field->parent->gen_params', only inflate the field if it's
23930         an open constructed type.
23931
23932 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23933
23934         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23935         exception object instead of the preconstructed ones.
23936
23937 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23938
23939         * mini.c: reverted changed to sigsegv_signal_handler commited
23940         accidentally in the previous patch.
23941
23942 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23943
23944         * mini.c:
23945         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23946         running --aot with an old assembly.
23947
23948 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23951         point values.
23952
23953         * mini-sparc.c: Add support for v9 branches with prediction.
23954
23955 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23956
23957         * mini.c (mini_init): #warning is GNUC only
23958
23959         * mini-sparc.h: implement __builtin_frame_address
23960         and __builtin_return_address for Sun C compiler
23961
23962 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23963
23964         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23965
23966 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23967
23968         * basic-calls.cs: Add test for unaligned byref long argument passing.
23969
23970         * mini-ops.h: Add sparcv9 compare and branch instructions.
23971
23972         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23973         v9 instructions if we have a v9 cpu.
23974
23975         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23976         registers for global allocation.
23977
23978         * exceptions-sparc.c: Fixes.
23979         
23980 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23981
23982         * liveness.c (mono_analyze_liveness): Optimized version.
23983
23984         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23985
23986         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23987         sparc work.
23988
23989         * basic-float.cs basic-calls.cs: New regression tests.
23990
23991 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23992
23993         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23994         sigaltstack implementation.
23995
23996         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23997         
23998         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23999         stuff if SIGSEGV_ON_ALTSTACK is not defined.
24000
24001 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * mini.c: Fix warnings.
24004         
24005         * mini.c (mono_resolve_patch_target): New function which contains the
24006         arch independent part of the patching process.
24007
24008         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
24009         patching code to a separate function.
24010
24011 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
24012
24013         * mini.c (add_signal_handler): ifdef out on Windows
24014
24015 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
24016
24017         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
24018         cpu-sparc.md: Add exception handling support + other fixes.
24019
24020         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
24021         typed GC detection in --version.
24022
24023         * basic.cs exceptions.cs: New regression tests.
24024
24025         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
24026         the arch specific code can store data during a compilation.
24027
24028         * mini-ops.h: Add OP_SETFRET.
24029
24030         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
24031         function, register a separate icall for each arity, so the icalls can
24032         get a wrapper.
24033         
24034         * mini.c (mono_print_tree): Print negative offsets in a more readable
24035         form.
24036         
24037         * mini.c: Make signal handling work on sparc.
24038         
24039         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
24040
24041         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
24042
24043         * jit-icalls.c: Emulate truncl by aintl on solaris.
24044
24045         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
24046
24047 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
24048
24049         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
24050
24051 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
24052
24053         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
24054         a MarshalByRef type, inline a method that performs the check, taking into
24055         account that the object can be a proxy. Also implemented tow new opcodes:
24056         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24057         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
24058         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
24059
24060 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24061
24062         * mini-ppc.c: if a relative branch displacement is too big
24063         but it points to and area reachable with an absolute branch, 
24064         avoid the thunks.
24065
24066 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24067
24068         * mini.c: optimize small copies in cpblk.
24069
24070 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
24071
24072         * basic-calls.cs basic-float.cs: New regression tests.
24073
24074         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
24075         negative offsets from %fp. Implement localloc. Fix local register 
24076         allocation. Fix the case when the this argument needs to be saved to
24077         the stack. Implement some missing opcodes.
24078
24079 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
24080
24081         * mini.c (mini_method_compile): Reenable global regalloc in methods
24082         with exception handlers.
24083
24084         * linear-scan.c (mono_varlist_sort): Fix warning.
24085
24086         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
24087
24088         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
24089         regalloc costs.
24090
24091         * liveness.c: Make all variables uses in exception clauses volatile, to
24092         prevent them from being allocated to registers. Fixes #42136.
24093
24094 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
24095
24096         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
24097         causes regressions.
24098
24099         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
24100         argument to mono_arch_regalloc_cost.
24101
24102         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
24103         precisely.
24104
24105 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
24106
24107         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
24108         Make the cost of allocating a variable to a register arch dependent.
24109
24110         * basic-calls.cs: Fix compilation of tests.
24111         
24112         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
24113         helper function to cut back on the number of #ifdefs needed.
24114
24115         * mini-ppc.c: Fix compilation.
24116
24117         * basic-calls.cs: New regression tests.
24118
24119         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
24120
24121         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
24122         of l0 since that is callee saved.
24123
24124         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
24125         to virtual calls.
24126
24127         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
24128         of delay instruction.
24129
24130         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
24131
24132         * mini.h (MonoCallInst): Add 'virtual' flag.
24133
24134         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
24135
24136 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
24137
24138         * *.cs: New regression tests.
24139
24140         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
24141         work.
24142
24143         * mini.c (mono_runtime_install_handlers): Fix build.
24144
24145         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
24146         'signal_stack_size' members.
24147
24148         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
24149         alternate signal stack.
24150
24151         * exceptions-x86.c: Add stack overflow handling.
24152
24153         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
24154         functions to arch independent code.
24155
24156         * mini.c (mono_print_tree): Print more detailed info for load_membase
24157         opcodes.
24158         
24159 2004-02-23  Martin Baulig  <martin@ximian.com>
24160
24161         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
24162
24163 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
24164
24165         * mini-x86.c: fixed reg allocation for div/rem.
24166
24167 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
24168
24169         * driver.c (mono_main): Report some configuratio options on --version.
24170
24171 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
24172
24173         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
24174         low in the address space. Correctly flush memory in thunks where we
24175         output native code.
24176
24177 2004-02-20  Martin Baulig  <martin@ximian.com>
24178
24179         * mini.c (mini_get_method): New static method; inflate all generic
24180         methods and methods in open generic instances.
24181         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
24182         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
24183
24184 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24185
24186         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
24187
24188         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24189
24190 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24191
24192         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24193
24194         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24195         it compile using Sun's compiler.
24196
24197 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24198
24199         * 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.
24200
24201         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24202
24203 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24204
24205         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24206         code.
24207         * mini-ppc.c: handle calls outside of the allowed range with thunks
24208         allocated using the code manager.
24209         * tramp-ppc.c: use the code manager to hold generated native code.
24210         Fixed the magic trampoline to just patch vtable entries.
24211
24212 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24213
24214         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24215         independent file.
24216
24217 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24220         PPC.
24221
24222         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24223         if we have a working __thread implementation.
24224
24225         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24226         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24227
24228 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24229
24230         * mini-x86.c: Fix compilation under gcc 2.
24231         
24232 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24233
24234         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24235         contains a call to the wrapped function.
24236
24237         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24238         OP_<CALL>_IMM opcodes, and use them under X86.
24239         
24240         * mini.c (mono_jit_find_compiled_method): Fix warning.
24241
24242         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24243
24244         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24245
24246         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24247         functionality to mini.c.
24248
24249         * mini.c (mono_create_jump_trampoline): New function to create a jump
24250         trampoline. Return a compiled method instead of a trampoline if it
24251         exists. Add a cache for jump trampolines.
24252
24253         * mini.c (mono_jit_find_compiled_method): New function to return a
24254         compiled method if it exists.
24255
24256         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24257         mono_arch_create_jit_trampoline.
24258
24259         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24260         a jump trampoline. Fixes #52092.
24261         
24262 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24263
24264         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24265         which is not up-to-date. Add check_corlib_version () instead.
24266
24267         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24268         have to call it.
24269         
24270         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24271         since newer valgrind versions do not need it.
24272
24273         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24274         compile a method with a given set of optimizations.
24275
24276         * mini.c: Compile icall wrappers on-demand instead of at startup.
24277
24278         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24279         wrapper for an icall.
24280
24281 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24284         #54063.
24285
24286         * iltests.il: Add test for non-empty stack before switch instruction.
24287
24288 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24289
24290         * mini.c: Add support for new stringbuilder marshalling conventions.
24291
24292         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24293
24294 2004-02-01  Martin Baulig  <martin@ximian.com>
24295
24296         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24297         in `ginst->mtype_argv'.
24298
24299 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24300
24301         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24302         facilitate grepping.
24303
24304 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24305
24306         * mini.c: fixed buglet in initobj generic implementation for references.
24307
24308 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24309
24310         * Makefile.am: make the version script conditional.
24311         * jit-icalls.c: handle missing truncl().
24312
24313 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24314
24315         * exceptions.cs: Add more tests for double->int conversion.
24316
24317         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24318         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24319
24320 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24321
24322         * driver.c: make --verbose --version emit an error
24323         if the loaded corlib doesn't match the runtime version.
24324
24325 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24326
24327         * mini-ppc.h: export ppc_patch().
24328         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24329         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24330         on par or better than on MacOSX.
24331
24332 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24333
24334         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24335         mono_lookup_pinvoke_call.
24336
24337         * mini-x86.c: Under windows, the default pinvoke calling convention is
24338         stdcall. Fixes #52834.
24339
24340         * mini.c (optimize_branches): Add an upper bound to the number of
24341         iterations to prevent infinite loops on strange loops. Fixes #53003.
24342
24343 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24344
24345         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24346         and ISINST. Fixes #52093.
24347
24348         * objects.cs (test_0_vector_array_cast): New tests.
24349         
24350 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24351
24352         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24353         checking in Array.Set ().
24354
24355         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24356         #52590.
24357
24358         * object.cs (test_0_multi_array_cast): New regression test.
24359
24360 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24361
24362         * exceptions-ppc.c: fix build on Linux/PPC.
24363
24364 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24365
24366         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24367         running under valgrind.
24368         (x86_magic_trampoline): Fix build bustage.
24369
24370         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24371         negative values as well. This is needed for the encoding of the line number
24372         info, since sometimes the line numbers are not in increasing order.
24373
24374 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24375
24376         * cpu-pentium.md (localloc): Increase the size of the localloc 
24377         instruction since it is a loop under Win32.
24378
24379         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24380         allocation.
24381
24382 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24383
24384         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24385         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24386         Max Horn (max@quendi.de). Fix file names in comments.
24387
24388 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24389
24390         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24391         avoid stack overflow.
24392         (replace_usage): Avoid uninitialized variable warnings.
24393
24394         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24395         and taking the address of valuetype variables.
24396
24397 2004-01-03  Patrik Torstensson
24398
24399         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24400         for other purposes than FP later on.
24401
24402 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24403
24404         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24405         of tail calls.
24406
24407 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24408
24409         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24410
24411 2003-12-30  Patrik Torstensson <p@rxc.se>
24412
24413         * mini-x86.h: Decreased number of availiable fp regs.
24414         Solves corner cases with FP spilling.
24415
24416 2003-12-23  Patrik Torstensson <p@rxc.se>
24417
24418         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24419         for floating point stack tracking / spilling on x86. 
24420         Fixes bug #49012.
24421         
24422         * basic-float.cs: added float mul overflow test.
24423
24424 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24427
24428 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24429
24430         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24431         supports for cond branches that overflow the immediate
24432         overflow offset. mcs can compile simple programs.
24433
24434 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * exceptions-ppc.c: exception handling support wip:
24437         finally handlers get run on exception.
24438
24439 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24440
24441         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24442         profiling.
24443
24444 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24445
24446         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24447         initial support for stack walking and unwinding.
24448
24449 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24450
24451         * driver.c (mono_main): Make corlib-out-of-sync message more 
24452         descriptive. Also remove verify_corlib call.
24453
24454 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24455
24456         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24457         not overlap with other call's arguments, too.
24458
24459 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24460
24461         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24462         move to arch-specific code the choice of arch-specific
24463         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24464         * mini.c: ensure emulation calls will not interleave
24465         with other calls.
24466
24467 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24468
24469         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24470         the magic trampoline stack frame is dropped before executing
24471         the new method.
24472
24473 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24474
24475         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24476         and integer to fp conversions. Added support for overflowing
24477         arguments on the stack. Reserve a couple more registers as temps.
24478         Added support for aot compilation (as output still needs to be
24479         tweaked, though).
24480
24481 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24482
24483         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24484         Don't overwrite return register in some corner cases.
24485
24486 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24487
24488         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24489         static constructors when AOT compiling.
24490
24491         * driver.c (mono_main): Call mono_check_corlib_version.
24492
24493 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24494
24495         * cpu-g4.md, basic.cs: fixed div target register.
24496
24497 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24498
24499         * mini-ppc.c, basic.cs: shl_imm fix with test.
24500
24501 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24502
24503         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24504         structures by value. Misc fixes.
24505         * objects.cs: more tests.
24506
24507 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24508
24509         * mini-ppc.c: lconv.ovf.i implemented.
24510
24511 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24512
24513         * mini.c:
24514         (mini_init): don't error out if someone already called g_thread_init.
24515
24516 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24517
24518         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24519         to be any type per the spec. Fix abnormal memory usage when
24520         the same object is repeatedly thrown.
24521
24522 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24523
24524         * mini.c: check for overruns in IL code.
24525
24526 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24527
24528         * TODO: Add/remove some todo entries.
24529
24530 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24531
24532         * driver.c (mono_main): Call mono_verify_corlib.
24533
24534 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24535
24536         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24537         This has been moved to mini.c
24538         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24539         type being casted is marshalbyref it could be a proxy, so instead of
24540         emitting the type check code, emit a call to a runtime method that will
24541         perform the check by calling CanCastTo if needed.
24542
24543 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24544
24545         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24546         methods with large stack frames under Win32.
24547
24548 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24549
24550         * Makefile.am: Distribute regression tests.
24551
24552         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24553         at the end instead of inserting each variable into the sorted list.
24554
24555         * linear-scan.c (mono_varlist_sort): New helper function.
24556         
24557 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24558
24559         * mini.c: ensure arguments and locals are within bounds.
24560
24561 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24562
24563         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24564         related fixes.
24565
24566 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24567
24568         * mini.c (mono_cprop_copy_values): Fix crash.
24569
24570         * aot.c: Set verbosity back to 0.
24571         
24572 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24573
24574         * regalloc.c: complete memory leak fix by Laurent Morichetti
24575         (l_m@pacbell.net).
24576
24577 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * driver.c (main_thread_handler): Revert the previous patch.
24580
24581         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24582         under valgrind.
24583
24584         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24585         memory from the memory pool.
24586
24587         * driver.c (main_thread_handler): Turn on all optimizations when
24588         --aot is used.
24589
24590         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24591         an array for better performance.
24592
24593         * regalloc.c (mono_regstate_assign): Fix memory leak.
24594
24595         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24596         serialize the debug info.
24597
24598         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24599         debug info from the serialized representation.
24600
24601         * aot.c: Save debug info into the generated file and load it when 
24602         loading a method.
24603
24604         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24605
24606 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24609         More FP-related fixes.
24610
24611 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24612
24613         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24614         and register allocation buglet. Hello world now runs.
24615
24616 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24617
24618         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24619         * tramp-ppc.c: fixed class init trampoline.
24620         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24621
24622 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24623
24624         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24625         mini.c: more ppc changes/fixes.
24626
24627 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24628
24629         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24630         Also optimize the case when the arguments are the same in the caller 
24631         and in the callee.
24632
24633         * iltests.il: Add tests for tail calls with valuetype arguments.
24634
24635 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24636
24637         * mini-ppc.c: fixes for struct return type.
24638
24639 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24640
24641         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24642         mono_spillvar_offset() to arch-specific code.
24643
24644 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24645
24646         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24647
24648 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24649
24650         * exceptions-x86.c: Fix stack space leaks.
24651         
24652         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24653         registers from the lmf if the method has save_lmf set.
24654
24655 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24656
24657         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24658         of icall wrappers into InvokeInDomain, since these are now per-domain.
24659
24660 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24661
24662         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24663         make some opcode emulation and intrinsic ops enabled/disabled 
24664         according to the architecture. More fixes.
24665
24666 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24667
24668         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24669
24670 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24671
24672         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24673         arch-specific handling for 'this' and struct return type to
24674         arch-specific code.
24675
24676 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24677
24678         * aot.c: prevent divide by zero error when reporting (it happened with
24679         Accessibility.dll).
24680
24681 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * mini.h (inst_switch): Remove unused macro.
24684
24685 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24686
24687         * aot.c:
24688         (load_aot_module): free 'info->methods' and 'info' properly. No more
24689         "free(): invalid pointer blah" messages when you have an old aot
24690         compiled assembly.
24691
24692 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24693
24694         * jit-icalls.c, mini.c: Added support for context static fields.
24695
24696 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24697
24698         * mini.c (mono_method_blittable): Methods which set LastError are not 
24699         blittable either. Fixes #51108.
24700         
24701 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24702
24703         * mini.c: flush icache.
24704         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24705
24706 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24707
24708         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24709
24710 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24711
24712         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24713         safe on IA32.
24714
24715         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24716         vararg calls.
24717
24718         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24719
24720 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24721
24722         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24723         instruction when the result is discarded.
24724
24725         * iltests.il (test_0_div_regalloc): New regression test.
24726
24727         * arrays.cs: Fix compilation error.
24728
24729 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24730
24731         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24732         float rules to inssel-x86.brg: sane architectures with FP registers
24733         don't need to implement these rules.
24734
24735 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24736
24737         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24738
24739 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24740
24741         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24742         implementation of 32 bit systems.
24743
24744 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24745
24746         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24747         (Jeroen Zwartepoorte).
24748
24749 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24750
24751         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24752         the caller and the callee matches.
24753         
24754         * mini.c (mono_method_to_ir): Add comment.
24755
24756         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24757         signbit is missing on some platforms.
24758
24759 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24760
24761         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24762
24763         * mini.c (setup_jit_tls_data): Call the new function.
24764         
24765         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24766
24767         * mini-x86.c: Add experimental support for fast access to the lmf
24768         structure under NPTL/Linux 2.6.x.
24769
24770 2003-11-06  Martin Baulig  <martin@ximian.com>
24771
24772         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24773         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24774         the debugger.
24775
24776 2003-11-02  Martin Baulig  <martin@ximian.com>
24777
24778         * mini.c (inflate_generic_field): New static method.
24779         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24780         generic instance and the field is declared in a generic type, call
24781         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24782
24783 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24784
24785         * mini.h mini.c (mono_method_same_domain): New function to return
24786         whenever the caller and the callee are in the same domain.
24787
24788         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24789
24790 2003-10-30  Martin Baulig  <martin@ximian.com>
24791
24792         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24793         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24794         method parameters.
24795         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24796         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24797
24798 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24799
24800         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24801         propagation.
24802
24803         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24804         object here, so it is in the correct appdomain etc.
24805
24806 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24809         already done.
24810         (mono_method_to_ir): Avoid freeing the type created returned from
24811         mono_type_create_from_typespec, since it is put into an internal cache
24812         by the function. Fixes pointer.exe.
24813
24814         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24815         trampolines for icalls and pinvokes as well. Fixes #33569.
24816
24817 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24818
24819         * mini.c: Update after appdomain changes.
24820
24821         * mini.c (mono_jit_compile_method_inner): Allways compile native
24822         method wrappers in the root domain, since there can only be one
24823         instance of them, whose address is stored in method->info.
24824
24825 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24826
24827         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24828         environment variable. Instead detect automatically whenever running
24829         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24830         valgrind.h.
24831
24832 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24833
24834         * trace.c, trace.h: New files that implement the new trace option
24835         parsing. 
24836
24837         * driver.c: Document new --trace options.
24838
24839         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24840         mini-x86.c: Apply:
24841
24842         -       if (mono_jit_trace_calls)
24843         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24844
24845         * mini.h: prototypes.
24846         
24847 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24850
24851         * mini.c inssel.brg: Implement typedefbyref opcodes.
24852
24853         * mini.c (mono_jit_compile_method): Remove unused local variable.
24854
24855         * mini.c (mono_jit_compile_method_inner): Ditto.
24856         
24857 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24858
24859         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24860         
24861         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24862
24863 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24864
24865         * mini.c (mono_no_aot): Remove unused global variable.
24866
24867         * mini.c: Thread safety fixes.
24868
24869 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24870
24871         * mini.c (mono_create_class_init_trampoline): Add a lock around
24872         class_init_hash_addr.
24873
24874         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24875         #30073.
24876
24877         * mini.c: Decompose the NEWARR instruction before decomposing its
24878         arguments. Fixes #30073.
24879
24880 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24881
24882         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24883         convention.
24884
24885 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24888
24889         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24890
24891         * driver.c: Add support for compiling icall wrappers to --compile.
24892
24893 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24894
24895         * inssel.brg: The empty value in class->interface_offsets is -1, not
24896         0. Fixes #49287.
24897
24898 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24899
24900         * objects.cs: New test for 'is' operator on an array of interfaces.
24901
24902 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * tramp-ppc.c: update trampoline code to support jumps
24905         and class initialization.
24906
24907 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24908
24909         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24910
24911         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24912
24913         * inssel.brg (OP_UNBOX): Remove unused rule.
24914
24915         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24916         region instead of one for each method. Fixes #47813.
24917
24918 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24919
24920         * exceptions.cs (test_0_nested_finally): New regression test for
24921         nested exception handlers.
24922
24923         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24924
24925         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24926
24927         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24928         inlining.
24929
24930         * mini.c (mono_method_check_inlining): Make the inlining limit 
24931         configurable by an environment variable.
24932         
24933         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24934
24935         * mini.h: Bump AOT file version.
24936
24937         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24938         token, store the image along with the token, since the token might not 
24939         refer to the same image as the method containing the relocation, 
24940         because of inlining.
24941
24942 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24943
24944         * mini.c (mono_precompile_assemblies): New function to compile
24945         all methods in all loaded assemblies.
24946
24947         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24948
24949         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24950         iassign and fassign to int*, since they can contain large negative
24951         values if the register is spilled. Also added some comments. Fixes
24952         #45817.
24953
24954         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24955         under Win32. Fixes #42964.
24956
24957 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24958
24959         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24960
24961         * aot.c: Added support for AOT compiling methods which contain calls
24962         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24963         handled.
24964         
24965         * driver.c (compile_all_methods): Run the compilation in a thread
24966         managed by mono. Fixes #44023.
24967
24968         * mini.c (mono_codegen): Print full method name in verbose output.
24969
24970         * mini-x86.c (mono_arch_patch_code): Fix warning.
24971         
24972         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24973         jumps, since the method we are jumping to might be domain-specific.
24974
24975         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24976
24977 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24978
24979         * inssel.brg: string chars are unsigned.
24980
24981 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24982
24983         * TODO: New todo item.
24984
24985         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24986         which calls mono_runtime_class_init and patches the call site to
24987         avoid further calls.
24988         (mono_arch_create_class_init_trampoline): New arch specific function 
24989         to create a class init trampoline.
24990         (create_trampoline_code): Generalized so it can create
24991         class init trampolines as well.
24992
24993         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24994         (mono_create_class_init_trampoline): New function to create and cache
24995         class init trampolines.
24996         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24997         vtable given the address of a class init trampoline. Used by the
24998         patching process.
24999         (mono_codegen): Generate a call to a trampoline instead of
25000         mono_runtime_class_init in LDSFLD[A].
25001         (mono_codegen): Add relocations for the new trampoline.
25002         
25003         * mini.h mini-x86.c aot.c: Added a new relocation type: 
25004         MONO_PATCH_INFO_CLASS_INIT.
25005
25006         * mini.h: Bump AOT version number.
25007
25008         * aot.c: Create a copy of the loaded code instead of using the original
25009         so methods which call each other will be close in memory, improving
25010         cache behaviour.
25011         
25012         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
25013         patch since it breaks the regression tests.
25014         
25015         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
25016         for the register saving instruction sequence since the 
25017         frame_state_for function in glibc 2.3.2 don't seem to detect it.
25018
25019 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
25020
25021         * TODO: Fix todo item && remove another.
25022
25023 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
25026         previous checkin.
25027
25028         * aot.c: Moved the check for MONO_LASTAOT into the initialization
25029         function of the module.
25030
25031         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
25032         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
25033         --no-aot command line option.
25034
25035 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25036
25037         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
25038         by Bernie Solomon (bernard@ugsolutions.com).
25039
25040         * inssel.brg: Refactor the interface offset table related code into
25041         its separate functions and add support for the AOT case.
25042
25043 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25044
25045         * aot.c (mono_aot_get_method_inner): Fix memory leak.
25046         
25047         * aot.c: Added mono_aot_verbose variable and made all debugging
25048         output depend on the value of this variable.
25049
25050         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
25051         method_label and info_label.
25052
25053         * mini.h mini-x86.c aot.c: Added a new relocation type 
25054         MONO_PATCH_INFO_IID for klass->interface_id.
25055
25056         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
25057         the MonoJitInfo structure.
25058
25059         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
25060         a non-root appdomain in shared mode.
25061
25062 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25063
25064         * aot.c: make aot loader less verbose. Remove free of unused variable.
25065
25066 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25067
25068         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
25069
25070         * .cvsignore: Added *.dll.
25071
25072         * mini.c (mono_print_tree_nl): New function callable while debugging.
25073
25074         * mini.c (mono_print_code): Export this.
25075
25076         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
25077         patched code.
25078
25079 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
25080
25081         * mini.h (MonoCompile): Added 'jit_info' field.
25082
25083         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
25084         the cfg structure, since it is needed by the AOT compiler.
25085
25086         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
25087
25088         * aot.c: A major rewrite. Changes include:
25089         - save exception tables for methods which have them.
25090         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
25091         to g_module_symbol.
25092         - reworked the file format so it is now much smaller and needs
25093         fewer relocation entries.
25094         
25095 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25096
25097         * aot.c (load_aot_module): Fix build bustage on platforms without
25098         Boehm GC.
25099
25100 2003-09-04  Martin Baulig  <martin@ximian.com>
25101
25102         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
25103
25104 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25105
25106         * TODO: Some new optimization ideas.
25107
25108         * aot.c: Move AOT module loading logic here from mono_assembly_open.
25109
25110         * aot.c: Save the optimization flags used to compile the code into
25111         the AOT module.
25112
25113         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
25114         support emitting domain specific code.
25115         
25116         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
25117         no longer domain neutral. It can be made domain neutral by compiling 
25118         with --optimize=shared.
25119
25120         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
25121         between appdomains.
25122
25123         * driver.c mini.h mini.c: New --no-aot debugging option which disables
25124         loading of AOT code.
25125
25126         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
25127         
25128         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
25129         if there is no domain neutrality information.
25130
25131 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25132
25133         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
25134         format version into the generated library.
25135
25136         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
25137         callee method into the caller since one of them could be shared.
25138
25139         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
25140         system exceptions from AOT code now works.
25141
25142         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
25143         method if it is domain neutral and the callee is not.
25144
25145         * graph.c (cfg_emit_one_loop_level): Fix warning.
25146
25147 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25148
25149         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
25150         last checkin.
25151
25152 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25153
25154         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
25155         is needed  by code which is executed before mono_runtime_init ().
25156         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
25157         
25158         * mini.c (mono_thread_abort): Fix warning.
25159         (mono_jit_compile_method): Call static constructor in the AOT case too.
25160
25161         * aot.c (mono_compile_assembly): Fix warning.
25162
25163 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25164
25165         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
25166
25167 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
25168
25169         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
25170
25171         * cpu-pentium.md: Fix the length of call opcodes so they include the
25172         ESP restoring instruction. Fixes #47968.
25173
25174 2003-08-28  Martin Baulig  <martin@ximian.com>
25175
25176         * mini-x86.c (mono_arch_call_opcode): Added support for
25177         MONO_TYPE_GENERICINST.
25178
25179         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
25180
25181 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25182
25183         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
25184         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
25185
25186         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
25187         metadata_section.
25188
25189 2003-08-26  Martin Baulig  <martin@ximian.com>
25190
25191         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25192         when reporting an error, set this to the actual error location.
25193         (mono_method_to_ir): Report the correct error location if
25194         get_basic_blocks() returned an error.
25195
25196 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25197
25198         * mini.c (mono_type_blittable): OBJECT is not blittable.
25199         (mono_method_blittable): Methods which have marshalling descriptors
25200         are not blittable either. Fixes #47842.
25201
25202 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25203
25204         * driver.c mini.c: Use an environment variable instead of a global 
25205         variable. Also fix the build.
25206
25207         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25208         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25209         reporting this. 
25210
25211         * driver.c mini.c: Added --with-valgrind option to turn off some
25212         code which prevents mono from running under valgrind.
25213
25214         * mini.c (mono_emit_call_args): Fixed warning.
25215
25216         * mini.c (mono_emulate_opcode): Fixed warning.
25217
25218 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25219
25220         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25221         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25222         regalloc.c, regalloc.h: specify available registers in arch-specific
25223         code and support floats in the regallocator (patch by Laurent Morichetti 
25224         <l_m@pacbell.net>)
25225
25226 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25227
25228         * mini.c: mono_thread_current() can be called only after
25229         mono_runtime_init(): rearrange code to not call it early on.
25230
25231 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25232
25233         * mini.c: allocate jump tables in the code mempools.
25234
25235 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25236
25237         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25238         freed.
25239
25240 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25241
25242         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25243         12 to 16.  This fixes bug #47453.
25244
25245
25246 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25247
25248         * mini-ppc.c: fixed indexed load and unsigned compares.
25249
25250 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25251
25252         * mini.c: reenabled installation of handler for
25253           thread abort signal.
25254
25255 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25258         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25259         until it's fixed and actually useful.
25260
25261 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25262
25263         * inssel-long32.brg: couple more opcodes implemented.
25264
25265 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25266         
25267         * mini-sparc.c: Even more opcodes implemeted.
25268
25269 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25270
25271         * mini-sparc.c: More opcodes implemented.
25272
25273 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25274
25275         * mini-sparc.c: More opcodes implemented.
25276
25277 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25278
25279         * inssel-sparc.brg: Add some needed rules.  Direct
25280         copy from PPC.
25281         * Makefile.am: Use inssel-sparc.brg
25282         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25283         an assert happy for now.
25284
25285 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25286
25287         * mini-sparc.c: Fixed compile errors.
25288         * exceptions-sparc.c: Same.  We now produce a mono binary 
25289         on sparc-linux.  Yea.
25290
25291 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25292
25293         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25294         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25295         They compile, but do not work.
25296
25297 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25298
25299         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25300         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25301         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25302         (ct@gentoo.org).
25303
25304 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25305
25306         * mini.c: more opcodes implemented and better support for generics.
25307
25308 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25309
25310         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25311         * mini.c, mini.h: first cut at generics support: some new instructions 
25312         added and changed the behaviour of some of the existing ones.
25313
25314 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25315
25316         * mini.c: Removed definition of metadata_shared mutex here.
25317
25318 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25319
25320         * mini-x86.c: make vararg calls work for instance methods.
25321
25322 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25323
25324         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25325         returns the arguments in a separte list, now.
25326
25327 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25328
25329         * aot.c, mini.c: updates for array type representation changes.
25330
25331 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25332
25333         * mini.c: register function to perform jit shutdown.
25334
25335 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25336
25337         * mini.c: use a faster allocator if possible.
25338
25339 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * aot.c: some cleanups and portability changes.
25342
25343 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini.c: use faster allocation for CEE_BOX if possible.
25346
25347 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25348
25349         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25350         Moved inlined mempcy code to its own function so that is can be
25351         reused. Added an inline memset function as well (optimized initobj).
25352         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25353
25354 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25355
25356         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25357
25358 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25359
25360         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25361         arch code can setup the cpu for CLR execution, if needed.
25362         We use it on x86 to set the precision of FP operations.
25363
25364 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25365
25366         * mini.c: disable some optimizations if we can guess they'll cost too
25367         much for a given method.
25368
25369 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25370
25371         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25372         
25373 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25374         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25375         info collection support.
25376
25377 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25378
25379         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25380         is now implemented in the profiling API. Get rid of a couple of
25381         unnecessary global variables.
25382
25383 2003-06-15  Nick Drochak <ndrochak@gol.com>
25384
25385         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25386         * cpu-g4.md: add op_bigmul and op_bigmul_un
25387         * cpu_pentium.md: add op_bigmul_un
25388         * inssel-long32.brg: add rule for unsigned bigmul
25389         * mini-ops.h: define OP_BIGMUL_UN
25390         * mini-x86.c: THE BUG: handle (un)signed properly
25391         * mini.c: choose unsigned opcode if needed.
25392         This set of patches fixes bug #44291
25393
25394 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25395
25396         * mini.c (optimize_branches): improved to handle all kinds of
25397         conditional branches.
25398
25399 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25400
25401         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25402         don't raise exceptions.
25403
25404 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25405
25406         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25407         to arch-specific files.
25408
25409 2003-06-09  Martin Baulig  <martin@ximian.com>
25410
25411         * Makefile.am (libs): Added $(LIBGC_LIBS).
25412
25413 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25414
25415         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25416         and OP_ATAN (fixes bug#44293).
25417
25418 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25419
25420         * Makefile.am, mini-x86.c: rename cpu description array to
25421         pentium_desc, since some compilers define the 'pentium' preprocessor
25422         symbol.
25423
25424 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25425
25426         * mini.c (mini_select_instructions): add explicit branch if the
25427         following block is not the false target of a conditional branch -
25428         we need this with any optimization that reorder or remove bblocks
25429
25430         * mini.c (optimize_branches): bug fixes
25431
25432 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25433
25434         * mini.c (mono_method_to_ir): inline static readonly fields
25435
25436         * ssa.c (fold_tree): start cfold support for long (very simple
25437         cases only)
25438
25439         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25440
25441 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25442
25443         * inssel.brg: fixed memcpy (bug #44219).
25444
25445 2003-06-05  Dick Porter  <dick@ximian.com>
25446
25447         * driver.c: Set the glib log levels to not abort if g_message
25448         recurses.
25449
25450         g_set_prgname() has to happen before mini_init() so that the
25451         process handle gets the info.
25452         
25453 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * driver.c: add intrins to the default optimizations to get wider
25456         exposure.
25457
25458 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25459
25460         * mini.h: some large basic blocks will overflow a 16-bit
25461         integers for symbolic registers.
25462
25463 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25464
25465         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25466         (mono_arch_output_basic_block): fix bug 43499 
25467
25468 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25469
25470         * mini.c: kill duplicated definition of mono_debug_format.
25471
25472 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25473
25474         * mini-x86.c, arrays.cs: fixed register allocation bug.
25475
25476 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25477
25478         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25479
25480         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25481
25482 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25483
25484         * mini.c:
25485         (print_method_from_ip): also print source location information if
25486         available.
25487
25488 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25489
25490         * mini.c (mono_find_block_region): bug fix in region code
25491         (mini_method_compile): enable removing unreachable code again, but
25492         only in methods without exception clauses.
25493
25494 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25495
25496         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25497         Implemented arglist opcode and handling of TypedReference type.
25498         Fixed x86 call convention when a structure is returned.
25499         Minimal support for calling static vararg methods.
25500
25501 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25502
25503         * mini.c (mini_method_compile):  always remove unreachable code,
25504         because the code in them may be inconsistent  (access to dead
25505         variables for example).
25506
25507 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25508
25509         * driver.c, debug-mini.c: warning fixes.
25510
25511 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25512
25513         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25514
25515 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25516
25517         * mini.c: thread-static fields are registered in mono_class_vtable(),
25518         so ensure the function is called before checking for them.
25519
25520 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25521
25522         * mini.c (optimize_branches): fix for bug 43586
25523
25524         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25525         overflow (fixes Bug #43639)
25526
25527 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25528
25529         * mini.c, objects.cs: allow the use of stobj for primitive types.
25530
25531 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25532
25533         * mini.c: be less strict about argument checking until we support
25534         running the verifier.
25535
25536 2003-05-27  Nick Drochak <ndrochak@gol.com>
25537
25538         * basic-long.cs: tests for (ulong)int * (ulong)int also
25539         * mini.c: use the same trick for (ulong)int * (ulong)int
25540
25541 2003-05-27  Nick Drochak <ndrochak@gol.com>
25542
25543         * basic-long.cs: add regression test for (long)int * (long)int
25544         * cpu-pentium.md: add op_bigmul specification
25545         * inssel-long32.brg: add OP_BIGMUL rule
25546         * mini-ops.h: add OP_BIGMUL
25547         * mini-x86.c: register allocator: handle case where src1 needs to be
25548         in EAX.
25549         * mini.c: substitute special BIGMUL opcode in the tree for 
25550         (long)int * (long)int
25551
25552 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25553
25554         * jit-icalls.c: call the type ctor on field access if needed.
25555
25556 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25557
25558         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25559         to a method (including results of ldelema, bug#43207).
25560
25561 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25562
25563         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25564         colors to show exception handler blocks.
25565
25566         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25567         (fix for pinvoke7.cs).
25568
25569 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25570
25571         * mini.h, mini.c: ensure correct initialization order for types that
25572         require it. Prepare for lazy compilation of jit icall wrappers.
25573         Provide a name for opcode emulation to reduce unneeded mallocing.
25574
25575 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25576
25577         * mini-x86.c: better register restoring code and profiling
25578         support for tail calls.
25579
25580 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25581
25582         * mini.h, driver.c: prepare for leaf methods optimization.
25583
25584 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25585
25586         * mini.c: get targets of branches before converting a method.
25587
25588 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25589
25590         * mini.c (optimize_branches): added some experimental code (disbaled) 
25591
25592 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25593
25594         * mini.c (optimize_branches): fix branch to branch optimization 
25595
25596         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25597
25598         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25599
25600         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25601
25602         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25603         if needed.
25604
25605 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25606
25607         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25608         enable use of interface variables again.
25609
25610         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25611         I1 to registers because there is no simply way to sign extend 8bit
25612         quantities in caller saved registers on x86.
25613
25614         * inssel-float.brg: set costs of some rules to 2 so
25615         that monobure always select the arch. specific ones if supplied,
25616         regardless of the order we pass the files to monoburg.
25617
25618 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25619
25620         * mini.c, mini-x86.c: since the magic trampoline for jumps
25621         can't patch the code directly, we do it as soon as the
25622         method gets compiled.
25623
25624 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25625
25626         * mini-x86.c, mini.h: introduce a new patching method
25627         to support CEE_JMP and tail calls.
25628         * mini.c: obey tail.call. Don't precompile methods target
25629         of CEE_JMP.
25630         * tramp-x86.c: new trampoline code to handle methods
25631         reached through a jump.
25632
25633 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25634
25635         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25636         bit values to registers
25637
25638 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25639
25640         * mini.c (mono_compile_get_interface_var): share interface
25641         variables if possible.
25642
25643 2003-05-16  Martin Baulig  <martin@ximian.com>
25644
25645         * debug-mini.c (mono_init_debugger): New function to initialize
25646         the debugger.  This is not in the debugger since it needs to
25647         access some of mini's internals.
25648
25649 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25650
25651         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25652
25653 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25654
25655         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25656         for value type handling.
25657
25658 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25659
25660         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25661         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25662
25663 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25664
25665         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25666           the constructor through a proxy.
25667
25668 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25669
25670         * jit-icalls.c, inssel.brg: fixes to array element address
25671         calculations.
25672
25673 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25674
25675         * mini-x86.c (is_regsize_var): allocate pointer to registers
25676
25677 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25678
25679         * driver.c: fixed typo, added intrins to the set of optimizations
25680         tested with regressions.
25681
25682 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25683
25684         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25685         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25686         test case.
25687
25688 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25689
25690         * inssel.brg: remove some common pop instructions without side effects
25691
25692 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25693
25694         * inssel-x86.brg: fixed thinko in int to double conversions.
25695
25696 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25697
25698         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25699
25700 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25701
25702         * inssel-long32.brg: two more missing instructions.
25703
25704 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25705
25706         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25707         if not already set.
25708
25709 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25710
25711         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25712         correctly.
25713
25714         * basic-float.cs: Added tests for negative zero.
25715
25716 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25719         a couple of missing operations for long casts, with test cases.
25720
25721 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25722
25723         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25724
25725 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25726
25727         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25728         code size estimation.
25729
25730 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25731
25732         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25733         abstract methods (fix bug 42542)
25734
25735         * aot.c: add ability to handle array types
25736         
25737 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25738
25739         * mini.c: Call the _specific versions of the object allocation
25740         functions if possible.
25741
25742 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25743
25744         * driver.c: call setlocale ().
25745
25746 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25747
25748         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25749         windows build.
25750
25751 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25752
25753         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25754
25755         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25756         wrappers (fix bug 42122)
25757
25758 2003-05-04  Martin Baulig  <martin@ximian.com>
25759
25760         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25761
25762         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25763         s/mini_set_defaults/mono_set_defaults/g.
25764
25765 2003-05-04  Martin Baulig  <martin@ximian.com>
25766
25767         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25768
25769 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25770
25771         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25772         (reported by Don Roberts).
25773
25774 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25775
25776         * mini.c: temporarily work around two bugs for this release.
25777
25778 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25779
25780         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25781         that contains -export-dynamic and it makes using the ld script
25782         useless.
25783         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25784
25785 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25786
25787         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25788         specific cpu.
25789
25790 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * mini.c: make sure leave calls all the needed finally blocks,
25793         even when the target jumps out of multiple exception clauses.
25794
25795 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25796
25797         * ldscript, Makefile.am: add linker script to reduce the number of
25798         exported symbols (should also fix the issues with libwine defining
25799         some of the same symbols in io-layer).
25800
25801 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25802
25803         * driver.c (mini_main): Avoid assertion when no file name is given on 
25804         the command line.
25805
25806 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * driver.c: added --version/-V command line option.
25809         Added the inline optimization in the regression tests.
25810
25811 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25812
25813         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25814         to the type in the method signature (fixes bug#42134).
25815
25816 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25817
25818         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25819
25820 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25821
25822         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25823
25824 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25825
25826         * driver.c: fixed bug #42100.
25827
25828 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25829
25830         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25831
25832 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25833
25834         * mini.c: moved most of the code required to do inlining to its own
25835         function so it can be reused. Inline also ctors if appropriate.
25836
25837 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25838
25839         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25840         the runtime can call mono API functions.
25841
25842 2003-04-27  Martin Baulig  <martin@ximian.com>
25843
25844         * debug-mini.c (mono_debug_init_method): Added
25845         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25846         send a notification to the debugger.
25847
25848         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25849         running in the Mono Debugger, just pass the breakpoint number to
25850         mono_debug_init_method().
25851
25852         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25853
25854 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25855
25856         * mini.c: allow some more unsafe compares.
25857
25858 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25859
25860         * mini-x86.c, Makefile.am: make distcheck works (partially from
25861         a patch by Richard Lee <r.h.lee@attbi.com>).
25862         * regset.c, regset.h: removed, they are unused.
25863
25864 2003-04-25  Dick Porter  <dick@ximian.com>
25865
25866         * driver.c: Usage reports the name as 'mono' not 'mini'
25867         * exceptions-x86.c: Build and run on freebsd
25868
25869 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25870
25871         * Makefile.am: install the program with the 'mono' name and
25872         the library as libmono instead of mini and libmini.
25873
25874 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25875
25876         * driver.c: provide the APIs for the embedding interface of the old jit.
25877
25878 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25879
25880         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25881
25882 2003-04-23  Martin Baulig  <martin@ximian.com>
25883
25884         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25885
25886         * driver.c: Added `--debug' command line argument to enable
25887         debugging support.
25888
25889 2003-04-23  Martin Baulig  <martin@ximian.com>
25890
25891         * debug.[ch]: Removed.  The code is now in
25892         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25893
25894         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25895         last six months.
25896
25897 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25898
25899         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25900
25901 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25902
25903         * mini.c:
25904         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25905         mono_domain_finalize.
25906         (mini_method_compile): use mono_method_profile* if the the option is
25907         enabled.
25908
25909 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25910
25911         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25912         methods with their wrapper.
25913
25914         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25915         methods with their wrapper.
25916
25917         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25918         their wrapper.
25919
25920         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25921         wrapper.
25922
25923         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25924         methods.
25925
25926 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25927
25928         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25929
25930 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25931
25932         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25933         of the mempool. This is slightly faster and uses less memory
25934
25935 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25936
25937         * mini.c: avoid O(n) allocation for variables.
25938
25939 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25940
25941         * mini.c: handle items on the stack after inlining methods.
25942
25943 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25944
25945         * mini.c: make the method->opcode optimization dependent
25946         on MONO_OPT_INSTRINS and do it lazily.
25947
25948 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25949
25950         * driver.c: print overall results at the end of regression run.
25951
25952 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25953
25954         * inssel.brg: don't overwrite symbolic registers.
25955
25956 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25957
25958         * inssel-x86.brg: fix conversion from long to float.
25959
25960 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25961
25962         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25963
25964 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25965
25966         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25967
25968         * driver.c: Added --print-vtable option as in the old JIT.
25969
25970 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25971
25972         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25973
25974 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25975
25976         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25977
25978 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25979
25980         * mini.c regalloc.c regalloc.h: Fix memory leak.
25981
25982 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25983
25984         * aot.c (mono_aot_get_method): register all used strings
25985
25986 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25987
25988         * mini.c: always intern strings references with ldstr at compile time.
25989
25990 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25991
25992         * Makefile.am: add BUILT_SOURCES.
25993
25994 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25995
25996         * driver.c: give a better error message when the assembly to execute
25997         doesn't have an entry point.
25998
25999 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
26000
26001         * Makefile.am: added hack for automake
26002
26003         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
26004         correct sematics.
26005
26006         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
26007
26008 22003-04-07  Martin Baulig  <martin@ximian.com>
26009
26010         * Makefile.am: Added Makefile.am.
26011
26012         * debugger-main.c: Removed, this is now in the debugger where it
26013         belongs.
26014
26015         * mini.pc.in: Call this package `mini' for the moment.
26016
26017
26018
26019
26020
26021
26022
26023
26024
26025
26026
26027
26028
26029
26030