2010-07-05 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
2
3         * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
4         before processing the exception on PPC too.
5
6         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
7
8         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
9         'this' is always passed as the first argument, before the vtype ret arg. This
10         simplifies get_this_arg_reg () and LLVM integration.
11
12 2010-07-05  Martin Baulig  <martin@ximian.com>
13
14         * exceptions-x86.c (mono_arch_handle_exception): Port this to
15         Windows; apply my patch from r159782 in the mono-2-6 branch.
16
17 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
18
19         * Makefile.am: Don't build the debug assembler files if we're building without
20         debugger support.
21
22 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
23
24         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
25
26 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
27
28         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
29         length.
30
31         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
32         regs [ARMREG_FP] instead.
33
34         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
35
36         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
37         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
38
39         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
40
41         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
42
43         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
44
45         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
46         without IMT_REG defined (ARM).
47
48         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
49         the trampolines.
50
51 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
52
53         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
54
55 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
56
57         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
58         definitions to match their declarations and vice-versa.
59
60 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
61
62         * Makefile.am (common_sources): Add mini-llvm.h.
63
64         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
65
66 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
67
68         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
69         compiling.
70
71 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
72
73         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
74         implemt the option of loading the llvm backend from a module so
75         that we can have a single binary and the bloat from llvm is
76         only experienced when it is actually loaded.
77
78 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
79
80         * mini-llvm.c: remove direct access to mono_defaults.
81
82 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
83
84         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
85         a no-op.
86
87         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
88
89         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
90         is now mono_arch_nullify_class_init_trampoline ().
91         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
92         opcodes, they are no longer needed.
93
94         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
95         now mono_arch_nullify_class_init_trampoline ().
96         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
97         opcodes, they are no longer needed.
98
99         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
100         vtable on platforms which support it.
101
102         * driver.c: Print the full LLVM version we are compiled against in --version.
103
104         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
105         a bit better. Decode nesting information to fix eh support for llvm+aot.
106
107         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
108         methods.
109
110         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
111
112         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
113         is always passed as the first argument, before the vtype ret arg. This simplifies
114         get_this_arg_reg () and LLVM integration.
115
116 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
117
118         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
119         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
120         most of the vcall specific code to mono_vcall_trampoline () from
121         common_call_trampoline ().
122
123 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
124
125         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
126         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
127         if the callsite is patched.
128
129         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
130         the llvm branch.
131
132         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
133         the trampoline in the xdebug info.
134
135         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
136         as well.
137
138 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
139
140         * mini-llvm.c: Fix a few problems exposed by make check.
141
142 2010-06-25  Mark Probst  <mark.probst@gmail.com>
143
144         * mini-trampolines.c (common_call_trampoline): An ugly hack to
145         work around a potentially very hard to fix problem with inflating
146         generic methods.
147
148 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
149
150         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
151         problem has been fixes.
152
153 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
154
155         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
156
157         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
158         It might be be better to define a MonoGCJitOptions structure later and have the
159         GC return that.
160
161         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
162
163         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
164
165         * debugger-agent.c (get_objref): Implement support for sgen.
166
167         * driver.c: Remove the unused gc_wrapper.h include.
168
169         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
170         implementation.
171
172 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
173
174         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
175
176         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
177         in MonoCompile.
178
179         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
180         instead.
181
182 2010-06-23  Miguel de Icaza  <miguel@novell.com>
183
184         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
185         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
186
187         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
188         it only for Boehm diagnostics.
189
190         * Makefile.am: Make the file a bit more consistent.
191
192         * debug-debugger.c: Wrap the entire file with an #ifdef
193         MONO_DEBUGGER_SUPPORTED to simplify the build.
194
195         * Makefile.am: Fix the opcodes build issue by including the
196         source, not by including the .lo file directly
197
198         Always bring the MDB sources into the build, to drop the
199         dependency on the AM_CONDITIONAL from configure.in as the hard
200         debugger supports Boehm, but not Sgen, this simplifies the build. 
201
202         * Renamed the *.s files into *.S
203
204 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
205
206         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
207         wb for now on 64bits systems while issues with valuetype returns
208         are not fixed.
209
210 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
211
212         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
213         passes by calling createStandardFunctionPasses ().
214
215 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
216
217         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
218
219 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
220
221         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
222         MONO_INST_FAULT.
223
224         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
225         allow better optimization if the OP_LDADDR which caused the flag to be set was
226         optimized away.
227
228         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
229
230         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
231         the type token.
232
233         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
234
235         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
236
237 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
238
239         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
240         to handle the code sequence generated for non-near calls. Fixes #616056.
241
242 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
243
244         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
245
246         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
247
248         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
249         nesting clause too.
250         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
251         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
252         trampoline which saves the context, so changes made to callee saved registers in
253         finally clauses are visible to a nesting catch clause.
254
255         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
256
257         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
258         in LLVM compiled code.
259         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
260         the finally handler has ran.
261
262         * mini.h (ResumeState): New structure containing information required to resume
263         exception handling after executing LLVM compiled finally clauses.
264
265         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
266         bit, by passing all the registers as one argument.
267
268 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
269
270         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
271         to avoid an assert.
272
273 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
274
275         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
276
277         * aot-compiler.c aot-runtime.c: Fix LLVM support.
278
279         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
280         pad, branch to a new bblock instead.
281
282         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
283         orig_method.
284
285         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
286
287         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
288
289 2010-06-17  Geoff Norton  <gnorton@novell.com>
290
291         * mini-arm.h:
292         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
293         can be used by sgen.
294
295 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
296
297         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
298
299         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
300         fails.
301
302         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
303         the ip done by throw_exception (), it is not needed for corlib exceptions.
304
305 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
306
307         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
308         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
309         of size > 5 words. This support fast barriers for value types up to
310         256/512 bytes which     beyond that the copying itself is the major issue.
311
312         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
313         for gsharing, so use it.
314
315         This eliminate all calls to mono_value_copy from managed code in
316         gmcs, fsharp and ipy.
317
318         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
319
320         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
321         performance kept
322
323         * mini.c (mini_init): Register new icall.
324
325 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
328         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
329
330 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
331
332         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
333         value types as the overhead is huge. Manually expand it up to 5 words to
334         avoid code bloat.
335
336         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
337         is an exception that performance is dominated by mono_value_copy.
338
339         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
340
341 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
344         trampolines on x86, since those have their own cconv.
345
346         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
347         exception trampolines.
348
349         * tramp-x86.c: Add xdebug info for a few trampolines.
350
351         * mini-llvm.c: Set the name of the arguments.
352
353         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
354         using a block address if using the LLVM mono branch.
355
356         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
357         trampolines.
358
359 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
360
361         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
362
363         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
364
365         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
366
367         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
368
369         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
370         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
371         to identify the vtable slot address plus the method which needs to be compiled.
372
373         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
374         using llvm.
375
376         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
377         'this' is always passed as the first argument, before the vtype ret arg. This
378         simplifies get_this_arg_reg () and LLVM integration.
379
380         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
381         the latest changes.
382
383         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
384         these trampolines.
385
386         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
387
388         * mini-llvm.c: Fix compilation with llvm 2.6.
389
390         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
391
392         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
393         defined.
394
395         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
396         is always passed as the first argument, before the vtype ret arg. This simplifies
397         get_this_arg_reg () and LLVM integration.
398
399 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
400
401         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
402
403         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
404         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
405         translate into much nicer code.
406
407 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
408
409         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
410         parameter index information. Use this to simplify a lot of code.
411
412         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
413
414 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
415
416         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
417         to fix infinite generic recursion. Fixes #612702.
418
419 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
420
421         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
422         imt trampoline per imt slot when using LLVM.
423
424 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
425
426         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
427
428 2010-06-09  Levi Bard  <levi@unity3d.com>
429
430         * debugger-agent.c: Clear unloaded types on appdomain unload.
431
432 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
433
434         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
435         Fixes #612206.
436
437         * exceptions.cs: Add a test.
438
439 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
440
441         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
442
443         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
444
445         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
446         so it doesn't have to do it.
447
448         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
449         process does not mix with ours.
450
451         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
452         ones.
453
454         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
455         loads/stores which can throw exceptions inside clauses.
456
457 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
458
459         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
460         one ENDFINALLY.
461
462         * mini.c (mini_init): Register mono_resume_unwind as an icall.
463
464 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
465
466         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
467
468         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
469         locals.
470
471 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
472
473         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
474         appdomain.
475
476 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
477
478         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
479         Use a separate generic class init trampoline for llvm, since it needs a different
480         signature.
481
482         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
483         includes the location of this/rgctx.
484
485         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
486         branch.
487
488 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
489
490         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
491
492         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
493         clause.
494
495 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
496
497         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
498         says so.
499
500         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
501
502         * aot-compiler.c (patch_to_string): New debugging helper function.
503
504 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
505
506         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
507         trampoline.
508
509         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
510
511         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
512
513         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
514
515         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
516         clauses.
517
518         * mini.c (create_jit_info): Print EH clause info for LLVM too.
519
520 2010-05-28  Mark Probst  <mark.probst@gmail.com>
521
522         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
523         cpobj with reference types.
524
525 2010-05-28  Mark Probst  <mark.probst@gmail.com>
526
527         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
528         write barrier for reference types.
529
530 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
531
532         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
533         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
534
535 2010-05-31  Martin Baulig  <martin@ximian.com>
536
537         Fix #608271.
538
539         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
540         clear_breakpoint() on all breakpoint events and remove them from the list.
541
542 2010-05-27  Martin Baulig  <martin@ximian.com>
543
544         Fix #605698.
545
546         * debugger-agent.c (method_commands, type_commands): Temporarily
547         set the appdomain while executing this method; do all metadata
548         calls in the debuggee's appdomain where user assemblies are loaded.
549
550 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
551
552         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
553
554 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
555
556         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
557
558 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
559
560         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
561         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
562         be referenced even after the header is freed.
563
564         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
565         section.
566
567 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
568
569 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
570
571         * genmdesc.c (main): Fixing the detection of the nacl switch.
572
573         Code is contributed under MIT/X11 license.
574
575 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
576
577         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
578
579         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
580
581         * mini.h (LLVM_CHECK_VERSION): New helper macro.
582
583 2010-05-25  Miguel de Icaza  <miguel@novell.com>
584
585         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
586         the Perl program
587
588         * genmdesc.c: Added support for nacl: key on the machine
589         description files to support the extra space required by Google
590         Native Client.
591
592 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
593
594         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
595
596 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
597
598         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
599         mono_runtime_class_init_full ().
600         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
601
602 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
603
604         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
605
606 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
607
608         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
609         two are not the same on ilp32.
610
611 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
612
613         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
614         added by mistake.
615
616         * mini-ppc.c: Fix the DISABLE_JIT build.
617
618 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
619
620         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
621         (make_writable): Remove this unused function.
622
623 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
624
625         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
626         structure. Make the labels to plt entries local symbols instead of assembler local
627         labels, since tha latter causes problems for the iphone linker.
628
629 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
630
631         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
632
633 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
634
635         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
636         (ppc_patch_full): Ditto.
637
638         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
639
640         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
641         if gshared is enabled, to avoid asserts in the trampoline code.
642
643         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
644         on ia64.
645
646 2010-05-15  Geoff Norton  <gnorton@novell.com>
647
648         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
649         xdebug mode.
650
651 2010-05-14  Geoff Norton  <gnorton@novell.com>
652
653         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
654         misaligned stack on darwin.
655
656 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
657
658         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
659         arm.
660
661 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
662
663         * xdebug.c: Fix ARM support.
664
665 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
666
667         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
668         and do most of the work on the normal stack.
669         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
670
671 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
672
673         * aot-compiler.c: Put non-code data into the .rodata section on linux.
674
675 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
676
677         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
678
679 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
680
681         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
682         and do most of the work on the normal stack.
683
684 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
685
686         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
687         and do most of the work on the normal stack even if sigaltstack is disabled.
688
689 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
690
691         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
692         UCONTEXT_REG_ constants are available on linux as well.
693         (mono_arch_monoctx_to_sigctx): Ditto.
694         (mono_arch_ip_from_context): Ditto.
695
696 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
697
698         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
699         other domains.
700
701 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
702
703         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
704         no longer needed.
705
706 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
707
708         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
709         if a breakpoint cannot be inserted.
710
711 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
712
713         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
714
715 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
716
717         * debugger-agent.c (frame_commands): Return an error instead of asserting if
718         no JIT info is found for the method.
719
720 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
721
722         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
723         in debug printf.
724
725 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
726
727         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
728         a list of arch specific trampolines.
729
730         * aot-compiler.c (emit_trampolines): Use it.
731
732 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
733
734         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
735         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
736         get rid of the _full from their name.
737
738 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
739
740         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
741         get_nullified_class_init_trampoline to remove some code duplication.
742
743 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
744
745         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
746         attach.
747
748 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
749
750         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
751
752         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
753
754         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
755         there is no need to jump through the first plt entry.
756
757         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
758
759         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
760         arch-specific function.
761         (mono_aot_get_plt_info_offset): Ditto.
762
763         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
764         mono_arch_init () to register jit icalls called from full-aot trampolines.
765         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
766         to mini-<ARCH>.c.
767
768         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
769         the specialized throw corlib exception trampoline, use a variant of the normal
770         trampoline along with a new C function which does the call to
771         mono_exception_from_token (), just like on x86.
772
773 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
774
775         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
776         Reorganize the full aot trampoline creation functions, instead of taking a bunch
777         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
778         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
779         creation functions on architectures which have the full-aot ones.
780
781 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
782
783         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
784
785 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
786
787         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
788         explicitly, this seems to be required by some gcc versions at -O2.
789
790         * mini-arm.c: Ditto.
791
792 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
793
794         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
795         has_target delegate invokes.
796
797 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
798
799         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
800         info fields.
801
802         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
803         add patches/unwind info arguments, move to mini.c.
804
805         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
806
807 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
808
809         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
810         command which returns full path names.
811
812 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
813
814         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
815         code_size output variable.
816
817         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
818         mono_get_lmf_addr.
819         
820 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
821
822         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
823         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
824         (mono_arch_cpu_enumerate_simd_versions): Ditto.
825
826 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
827
828         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
829         apple assembler.
830
831 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
832
833         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
834
835 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
836
837         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
838
839 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
840
841         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
842
843 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
844
845         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
846         line number support works with eglib.
847
848 2010-04-27  Miguel de Icaza  <miguel@novell.com>
849
850         * driver.c, mini.c: Since linking with LLVM makes the default Mono
851         dirty an extra 70kb pages on startup we are now going to choose a
852         different strategy: ship mono and mono-llvm binaries, with the
853         second being the one that links with LLVM and defaults to LLVM
854         being enabled.
855
856 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
857
858         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
859         Implement full-aot support on x86.
860
861         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
862         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
863         the first register returned by get_global_int_regs ().
864
865         * cpu-x86.md: Fix the length of insertx_u1_slow.
866
867         * iltests.il.in: Disable tail call tests when running with full-aot.
868
869 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
870
871         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
872
873 2010-04-24  Mark Probst  <mark.probst@gmail.com>
874
875         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
876         in the initializer, because it's non-constant.
877
878 2010-04-23  Miguel de Icaza  <miguel@novell.com>
879
880         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
881         of LLVM on by default.   Used for buildbots and other setups.
882
883 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
886
887 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
888
889         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
890         initonly static fields when using moving GC.
891
892         Contributed under MIT/X11 license.
893
894 2010-04-23  Geoff Norton  <gnorton@novell.com>
895
896         * mini-amd64.h: Darwin x86_64 support.
897
898 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
899
900         * exceptions-arm.c: Remove platform checks in favor of configure checks.
901
902 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
903
904         * exceptions-arm.c: Add Android support for sigcontext structure.
905
906 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
909         wrappers correctly now that their wrapper info is NULL.
910
911 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
912
913         * mini.c (mono_jit_compile_method_inner): Avoid calling
914         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
915
916 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
917
918         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
919         so the latter can be #ifndef DISABLE_JIT-ed.
920
921         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
922
923 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
924
925         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
926
927 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
928
929         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
930         stack.
931
932 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
933
934         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
935         calling mono_class_num_methods (). Fixes #592244.
936
937 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
940
941         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
942
943 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
944
945         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
946         version.
947         * (handle_alloc): Ditto.
948         (mono_method_to_ir): Remove the constrained call restriction added by a previous
949         change, its not needed anymore.
950
951 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
952
953         * mini-posix.c (sigusr1_signal_handler): Fix build on
954         non x86/amd64 systems.
955
956 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
957
958         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
959         calls where the constrained class needs a context. Fixes #595863.
960
961         * iltests.il.in: Add a test.
962
963 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
964
965         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
966         2.6/SVN seems to have broken support for them.
967
968 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini-llvm.c: Fix support for LLVM 2.6.
971
972 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
973
974         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
975         MonoInternalThread belonging to the thread.
976
977 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
978
979         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
980         unsafe optimization that will remove bound checks.
981
982 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
983
984         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
985         CompareExchange not to be inlined for I8.
986
987         Contributed under MIT/X11 license.
988
989 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
990
991         * array.cs: Add tests for cast between primitive array types.
992
993 2010-04-07 Andreia Gaita  <avidigal@novell.com>
994
995         * Makefile.am: create a convenience library for moon to link with
996
997 2010-04-07 Paolo Molaro <lupus@ximian.com>
998
999         * method-to-ir.c: optimize array accesses from generic interfaces.
1000
1001 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1004
1005 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1006
1007         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1008         of marshalbyref classes.
1009
1010         Fixes #515884.
1011
1012 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1015         information.
1016
1017         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1018         information.
1019
1020         * mini.h: Increase AOT version.
1021
1022 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1023
1024         * mini-x86.h: Only enable soft debugger when using sigaction or on
1025         Windows. Fixes build on Haiku (lacks siginfo_t).
1026
1027         Code is contributed under MIT/X11 license.
1028
1029 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1030
1031         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1032         BeOS-style signal handlers.
1033
1034         Code is contributed under MIT/X11 license.
1035         
1036 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1039
1040 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1041
1042         * mini-exceptions.c: Fix win32 build.
1043
1044 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1045
1046         * mini.c, driver.c: Call mono_gc_base_init() before
1047         mono_debug_init().
1048
1049 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1050
1051         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1052         call_method]): Delegate the actual work in security-core-clr.c
1053         to ease code sharing.
1054
1055 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1056
1057         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1058         float conv.ovf.un opcodes are encountered, instead of asserting later.
1059         Fixes #566296.
1060
1061 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1064
1065         * iltests.il.in: Add a test.
1066
1067 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1068
1069         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1070         large. Fixes #567040.
1071
1072         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1073
1074 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1077         #592711.
1078
1079 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1080
1081         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1082         mono_create_handler_block_trampoline with the proper #ifdef so that it
1083         compiles on amd64.
1084
1085 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1086
1087         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1088         allows to select if it's new or old context that is passed to 
1089         the callback.
1090
1091         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1092         case when executing a guarded handler from the EH machinery.
1093
1094         * mini-exceptions.c (mono_install_handler_block_guard): New function
1095         responsible for checking for handler blocks, installing the guard and
1096         clearing abort state.
1097
1098         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1099         to check for handler blocks and skip interruption logic if one was found.
1100
1101         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1102         by the handler block guard trampoline. Resumes interruption by raising the
1103         pending ThreadAbortException.
1104
1105         * mini.c (create_jit_info): Calculate the end address of a finally block.
1106
1107         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1108         of a finally block to a specified address and return the old one.
1109
1110         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1111         trampoline patches the original return address and calls the trampoline function.
1112
1113 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1116
1117         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1118         does the patching if the callee is in the same domain.
1119
1120         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1121         of mono_arch_patch_plt_entry ().
1122
1123 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * mini.c (create_jit_info): Fix try block hole length encoding.
1126
1127 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1130         duplicate information and print offsets instead of absolute addresses.
1131
1132 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1133
1134         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1135         event is sent. Fixes #591733.
1136
1137 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1140         OpenBSD.
1141
1142 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1145         thread_to_tls hash table.
1146
1147         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1148         section. Fixes #591000.
1149
1150 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1151
1152         * Makefile.am (version.h): Check for pure .git directory only,
1153         fixes SVN revision when using git without git-svn.
1154
1155         Contributed under MIT/X11 license.
1156
1157 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1160
1161 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1162
1163         * basic-simd.cs: Test for vector x scalar binary operators.
1164
1165 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1166
1167         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1168         intrinsics with expanded scalar arguments.
1169
1170 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1171
1172         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1173         don't have an exception class, so don't decode it. This would crash
1174         with filter clauses.
1175
1176 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1177
1178         Make sure that trunk builds with DISABLE_JIT, an update to the
1179         PlayStation 3 port.
1180         
1181         * mini.c (mini_get_shared_method): this code seems to be necessary
1182         regardless of whether DISABLE_JIT has been defined.
1183
1184         (mono_jit_compile_method_inner): it seems that this method is
1185         required even in full AOT mode, so ifdef out only the pieces that
1186         try to genrate code (the body of code that applies patches to the
1187         code).  
1188
1189         (mini_method_compile): do not compile when using DISABLE_JIT.
1190
1191         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1192         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1193         compile when DISABLE_JIT is set.
1194
1195 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1196
1197         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1198         arch really supports it.
1199
1200 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1201
1202         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1203
1204 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1205
1206         * exceptions-s390x.c: Add support for
1207         mono_arch_get_throw_corlib_exception and fix throw by name.
1208
1209         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1210         logic (especially for varargs); Correct localloc sizing; Add
1211         mono_arch_get_this_arg_from_call and
1212         mono_arch_get_this_arg_from_call.
1213
1214         * mini-s390x.h: Add support for facility list extraction;
1215         Correct/update MONO_ARCH_xxx settings.
1216
1217         * mini-s390.c: Minor corrections to instruction output for
1218         varargs. No IMT implementation - I think it's time to deprecate
1219         s390 and just leave s390x.
1220
1221         * tramp-s390x.c: Correct creation of trampoline instruction
1222
1223
1224         * cpu-s390x.md: Update some instruction lengths
1225
1226 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1229         can be hit with partial sharing.
1230
1231         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1232         in non-shared classes correctly.
1233         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1234         Turn on partial sharing.
1235
1236 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1239         by mistake.
1240
1241 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1244         mono_method_signature ().
1245
1246         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1247
1248         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1249         error checking, so later calls do not need error checking.
1250
1251 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1254
1255         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1256
1257 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1258
1259         * mini-exceptions.c (mono_handle_exception_internal): Don't
1260         check try_end for archs different than s390. 
1261
1262         * mini.c (create_jit_info): Don't crash if the finallt block is the
1263         last one.
1264
1265 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * driver.c (mono_main): Don't free global codeman under linux since
1268         glic now peeks at code on stack for more archs than just amd64.
1269
1270 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1271
1272         * mini.c, method-to-ir.c: changes to support compressed interface
1273         bitmaps.
1274
1275 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1276
1277         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1278         Use sigaction on OpenBSD too.
1279
1280 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1283
1284 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1285
1286         * debugger-agent.c: #include sys/select.h for fd_set.
1287
1288         Code is contributed under MIT/X11 license.
1289
1290 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1293         (openbsd+amd64 ?).
1294
1295 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1298         some large methods with lots of exception handlers. Fixes #440924.
1299
1300 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1301
1302         * method-to-ir.c: remove code duplication for interface checks.
1303
1304 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1307         (assembly_unload): Clear all event requests referencing the to-be unloaded
1308         assembly.
1309
1310
1311 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1312
1313         * mini.h, mini-exceptions.c: restore the state of the stack
1314         guard page permissions.
1315
1316 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1319         call site patching code, it doesn't appear to be needed.
1320
1321 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1324         sharing generic methods whose type arguments are a mix of reference and
1325         non-reference types. Not yet turned on.
1326
1327         * mini.c (mini_get_shared_method): New helper function to return
1328         the method which will be compiled/registered in the JIT tables when doing
1329         generic sharing.
1330         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1331         use mini_get_shared_method ().
1332
1333         * mini.c (mini_method_compile): Register the same method which is compiled when
1334         doing generic sharing.
1335
1336         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1337
1338         * generics.cs: Add partial sharing tests.
1339
1340 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1341
1342         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1343                    Add an enum value that or's all possable values together. Add an enum value
1344                    that marks the end of the used bit indexes.
1345
1346         * mini-amd64.c : Make changes to match the changes in mini.h 
1347
1348         * mini-x86.c : Make changes to match the changes in mini.h
1349
1350         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1351                    simd_version to support more simd versions. Changed the name of
1352                    simd_version to simd_version_flags to make it more intuitive that
1353                    it now contains bit flags. Reordered the *_intrinsics arrays to
1354                    match the changes above. Changed emit_intrinsics() to use the new
1355                    setup mentioned above.
1356
1357         Code is contributed under MIT/X11 license.
1358
1359 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1360
1361         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1362         remaining archs. Alpha and hppa maintainers, please stand up.
1363
1364 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1367         is needed even when fail_tramp!=NULL.
1368
1369 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * debugger-agent.c (insert_breakpoint): Write a log message.
1372
1373 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * iltests.il.in: Add a few tests for LEAVE going over multiple
1376         finally clauses.
1377
1378 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1381
1382 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1383
1384         * mini.h (MonoBasicBlock): Add native_length field.
1385         * mini.h (MonoCompile): Add try_block_holes field.
1386         * mini.h (MonoInst): Add exception_clause pointer to
1387         the data union.
1388
1389         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1390         * mini.c (mono_cfg_add_try_hole): New function to register possible
1391         holes in try blocks.
1392         * mini.c (create_jit_info): Fill in the holes information.
1393
1394         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1395         by a try block.
1396
1397         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1398
1399 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1400
1401         * jit-icalls.c: adjusted for the array API changes.
1402
1403 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1406
1407 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1410         the 'pending' flag. This fixes support for appdomains too.
1411
1412
1413 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1414
1415         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1416
1417 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1420         when using LLVM, LLVM generates it itself when needed.
1421
1422         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1423
1424         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1425         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1426         OP_ANDNPS/OP_ANDNPD.
1427
1428 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1431         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1432         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1433
1434 2010-03-11  Martin Baulig  <martin@ximian.com>
1435
1436         * debugger-agent.c (type_commands): Add NULL check to
1437         `CMD_TYPE_GET_SOURCE_FILES'.
1438
1439 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1442
1443 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1444
1445         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1446         #586664.
1447
1448         * iltests.il.in: Add a test.
1449
1450 2010-03-05  Martin Baulig  <martin@ximian.com>
1451
1452         Add support for aborting invocations.
1453
1454         * debugger-agent.c
1455         (InvokeData): Added `InvokeData *last_invoke'.
1456         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1457         added a new `invoke' field to keep the `InvokeData *' throughout
1458         the invocation.
1459         (ErrorCode): Added `ERR_NO_INVOCATION'.
1460         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1461         (mono_debugger_agent_handle_exception): Don't report any exception
1462         if an abort was requested.
1463         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1464         a thread abort if necessary.
1465         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1466
1467 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1470         so we can release the whole list and not just the first one. Free
1471         it in more places as well.
1472
1473 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1476
1477 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1478
1479         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1480
1481 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1482
1483         * driver.c: report also other misc build options.
1484
1485 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1486
1487         * method-to-ir.c: Generate better code for the NewObject
1488         intrinsic.
1489         
1490 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1493         is disabled. Fixes #582322.
1494
1495         * iltests.il.in: Add a test.
1496
1497 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1500         the handling of obj->synchronization == null and owner != current thread to
1501         mono_monitor_exit ().
1502
1503         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1504
1505
1506 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1507
1508         * mini.c: change the way emulated opcode info is stored and save about
1509         4 KB of runtime memory.
1510
1511 2010-03-04  David S. Miller  <davem@davemloft.net>
1512
1513        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1514        that don't provide the siginfo in the second signal handler argument
1515        are buggy, and this has been fixed for years.
1516        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1517        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1518
1519 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * aot-runtime.c (find_symbol): Fix a leak.
1522         (decode_patch): Ditto.
1523
1524 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1527
1528 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1531
1532 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1533
1534         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1535
1536 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1537
1538         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1539         to check for errors, it's enough to create the metadata open.
1540
1541         Fixes #562150
1542
1543 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1544
1545         * trace.c|h:
1546         * mini-exceptions.c: Add support for printing stack traces when handling
1547         exceptions, and when printing exceptions thrown while tracing also print
1548         the exception message.
1549
1550 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1551
1552         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1553         since the exclude token is a valid string character.
1554
1555 2010-03-02  Levi Bard  <levi@unity3d.com>
1556
1557         * debugger-agent.c: Invalidate thread stacks on domain unload.
1558
1559 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1560
1561         * method-to-ir.c: Emit dummy_use for stored reference after write
1562         barriers to make sure the object is pinned if the GC interrupts
1563         before the write barrier is done.
1564
1565 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1568
1569 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * debugger-agent.c: Add a log message printing the protocol version.
1572
1573 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * debugger-agent.c: Add a new command to communicate the protocol version used
1576         by the client. This could be used to allow newer runtimes to communicate with
1577         older clients.
1578
1579 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1582
1583 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1586         type.
1587
1588 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1589
1590         * mini-arm.c: make the arm cpu arch configurable with the
1591         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1592         Bug #584198.
1593
1594 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1595
1596         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1597         support for the perf tool on Linux.
1598
1599 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1600
1601         * method-to-ir.c: make string.InsertenalSetChar() specialization
1602         effective.
1603
1604 2010-03-01  Robert Jordan  <robertj@gmx.net>
1605
1606         * Makefile.am: fix the non-static build.
1607
1608 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1611         here.
1612
1613 2010-02-26  Robert Jordan  <robertj@gmx.net>
1614
1615         * tasklets.c (continuation_store): Return from an error condition
1616         immediately.
1617
1618 2010-02-26  Martin Baulig  <martin@ximian.com>
1619
1620         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1621
1622         * debug-mini.c
1623         (MonoDebuggerThreadInfo): Added `internal_flags'.
1624         (MonoDebuggerInternalThreadFlags): New enum.
1625         (_mono_debugger_throw_exception): Don't signal the debugger if a
1626         type abort was requested.
1627         (_mono_debugger_unhandled_exception): Likewise.
1628         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1629         (mono_debugger_runtime_invoke): If the debugger requested a thread
1630         abort during the invocation, reset it here.
1631
1632 2010-02-26  Martin Baulig  <martin@ximian.com>
1633
1634         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1635         instead of `MonoThread *'.
1636
1637 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1640         code offsets table, as it is mostly sorted.
1641
1642 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1645         Fixes #582991.
1646
1647 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1650
1651 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1652
1653         * Makefile.am: build the new ABI version of the libmono library.
1654         * debugger-agent.c, mini.c: fix warnings with the new API.
1655         * jit.h: don't depend on glib.h being included.
1656
1657 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1660
1661 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1664         ThreadStatic variables.
1665
1666 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1669         data is not freed yet. Fixes #582460.
1670
1671 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1672
1673         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1674         event requests. Bump protocol minor version.
1675
1676 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1679
1680 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1683         #581950.
1684
1685         * iltests.il.in: Add a test.
1686
1687 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1688
1689         * mini.c (inline_method): Check for loader errors.
1690
1691 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1694         instead of mono_method_get_header as it doesn't decode locals
1695         so the called method can have unresolved dependencies that will only
1696         be satisfied after the current method is JIT'd.
1697
1698         Fixes #550968.
1699
1700 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * basic.cs (test_0_div_opt): Speed this up a bit.
1703
1704 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1707
1708         * mini.c (mono_jit_create_remoting_trampoline): Call
1709         mono_create_specific_trampoline () instead of
1710         mono_arch_create_specific_trampoline ().
1711
1712         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1713
1714 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1717         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1718
1719         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1720
1721         * mini-amd64.c: Fix DISABLE_JIT support.
1722
1723 2010-02-20  Geoff Norton  <gnorton@novell.com>
1724
1725         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1726
1727 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1730         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1731         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1732         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1733         handle_exception.
1734
1735 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1738         edx/ecx too. This is needed to support OP_SEQ_POINT.
1739
1740 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1743
1744         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1745
1746 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1749         LLVM+AOT+exceptions, not enabled yet.
1750
1751 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1754
1755 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1758         xdebug info for these.
1759
1760         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1761         in a few places.
1762
1763         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1764         not used yet.
1765
1766 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1769
1770 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1771
1772         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1773         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1774
1775         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1776         for mtouch.
1777
1778 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1779
1780         * debugger-agent.c: handle incomplete reads and EINTR in
1781         recv()/send(). This could have been causing random
1782         disconnections.
1783
1784 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1787         points.
1788
1789         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1790         so they have small offsets. Fixes #566311.
1791
1792 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1793
1794         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1795
1796 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * mini-amd64.c: Remove the special casing of byref in a few places now that
1799         mini_type_get_underlying_type () handles it.
1800
1801         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1802         by returning native int. Fixes #577984.
1803
1804 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1805
1806         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1807         a macro.
1808
1809         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1810         of putting the clause itself.
1811
1812         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1813
1814 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1817         might be unaligned.
1818
1819 2010-02-10  Geoff Norton  <gnorton@novell.com>
1820
1821         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1822
1823 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1826         llvm methods too.
1827
1828         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1829         it is not an LLVM generated symbol.
1830
1831         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1832
1833         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1834         implementation in gshared mode because it causes regressions.
1835
1836         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1837
1838         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1839         should be done by the caller.
1840
1841         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1842
1843         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1844
1845         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1846         since mono_jit_info_table_find () doesn't do it anymore.
1847
1848         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1849         instead of mono_jit_info_table_find ().
1850
1851 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1854
1855         * aot-compiler.c (encode_method_ref): Update after the removal of
1856         mono_gc_get_managed_allocator_type ().
1857
1858         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1859         Fixes #564538.
1860
1861 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1864         generic params as well.
1865         (handle_isinst): Ditto.
1866
1867         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1868         instead of always calling an icall.
1869
1870         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1871         computing the size of the got.
1872
1873         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1874         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1875         the assembly directive '.set' so it points to the first LLVM emitted method.
1876
1877 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1878
1879         * mini.c (mini_method_verify): Report the method which failed to verify.
1880
1881 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1882
1883         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1884         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1885         runtime MS verifier.
1886
1887 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1890         #561962.
1891
1892 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * mini-llvm.c: Init the jit module only when first JITting.
1895
1896         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1897
1898         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1899
1900         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1901         replaced with the real got.
1902
1903         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1904
1905         * image-writer.c: Reduce the amount of #ifdefs a bit.
1906
1907         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1908         llvm on darwin/arm.
1909
1910         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1911
1912         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1913         global.
1914
1915 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1918         (mono_llvm_emit_method): Fix unaligned stores too.
1919
1920         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1921         so async stack walks don't crash.
1922
1923 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1926         was not patched if the callee needed an rgctx trampoline.
1927
1928 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1931         vtable address in AOT code.
1932
1933 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1936         MonoInst's.
1937
1938 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1939
1940         * genmdesc.pl: remove dependency on external cpp.
1941
1942 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1943
1944         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1945         using LLVM, its not needed, and abcrem can't handle it.
1946
1947 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1948
1949         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1950         it easier to group instructions and reduce duplication.
1951
1952 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * decompose.c: Move the array/soft float decompose routines here from
1955         method-to-ir.c.
1956
1957         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1958
1959 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1962         to tell LLVM that the got is constant, not used yet.
1963
1964         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1965
1966 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1967
1968         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1969         managed wrappers.
1970
1971 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * aot-compiler.c (add_wrappers): Commit the hack which generates
1974         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1975         custom attribute.
1976
1977 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1980         a fault, only used by the LLVM backend.
1981
1982         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1983         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1984
1985         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1986         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1987
1988         * mini-llvm.c: Only generate volatile loads from load instructions which have
1989         the MONO_INST_FAULT flag set.
1990
1991 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1994         64 bit platforms.
1995
1996 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1999         sequence points. Fixes #571236.
2000
2001 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2004         end of the appdomain unload process, after assemblies have been unloaded.
2005         Fixes #574842.
2006
2007 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2010         works.
2011
2012         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2013         Fixes #573988.
2014
2015 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2018
2019 2010-01-26  Geoff Norton  <gnorton@novell.com>
2020
2021         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2022         with struct marshalability.
2023
2024 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2027         it supports class names as well.
2028
2029         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2030         needed by the GC map code.
2031
2032         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2033         flags if needed.
2034
2035         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2036         if cfg->init_ref_vars is set.
2037
2038         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2039         cfg->disable_initlocals_op_refs is set.
2040
2041         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2042         using liveness info if cfg->compute_precise_live_ranges is set.
2043
2044         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2045         volatile variables correctly. Add comments about the live ranges. Not enabled
2046         yet.
2047
2048 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2051         0x2a into them in method prologs.
2052
2053         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2054
2055 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2058         classes, since llvm is compiled with -fno-rtti.
2059
2060         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2061
2062         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2063         llvm does not require it.
2064
2065         * aot-runtime.c (load_method): Print the full name of the last aot method.
2066
2067 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2070         thread has not fully started yet.
2071
2072 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2075
2076 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2077
2078         * driver.c: Do not abort if LLVM is not supported, print a
2079         warning and add the information to the Mono JIT information.
2080
2081 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2084         using explicit null checks.
2085
2086 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2089         related code.
2090
2091         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2092         () in one place.
2093         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2094         its no longer needed.
2095
2096         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2097
2098         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2099         define for platforms still using it (s390). Get rid of the
2100         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2101
2102         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2103         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2104
2105         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2106         the caller pushed the arguments.
2107
2108         * mini-llvm.c: Enable throwing exceptions on x86.
2109
2110         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2111         "Thread (nil) may have been prematurely finalized" messages if this is called
2112         on a thread not registered with the runtime.
2113
2114         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2115
2116 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * jit-icalls.c (mono_array_new_3): New jit icall.
2119
2120         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2121
2122         * arrays.cs: Add a test for 3 dimensional arrays.
2123
2124 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2127         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2128         used.
2129
2130         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2131         thrown on x86.
2132
2133         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2134
2135         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2136
2137         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2138
2139 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2140
2141         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2142           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2143
2144         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2145
2146         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2147
2148         Code is contributed under MIT/X11 license.
2149
2150 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2153
2154         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2155
2156         * mini.c (mini_method_compile): Set the new flag when running under the
2157         debugger.
2158
2159 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2162         a ref/noref value + a global pin flag, so parts of stack frames can still be
2163         precisely marked even if they include stuff which needs pinning. Improve logging.
2164         Fix many bugs. Not enabled yet.
2165
2166         * gc-test.cs: Add a few tests.
2167
2168         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2169         the normal -v options. Avoid propagating liveness information through bblocks
2170         which end with a NOT_REACHED opcode.
2171
2172         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2173         after cfg has been freed.
2174
2175 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2178         if a clause is skipped because it uses the exception object, since it could
2179         have caught the exception.
2180
2181         * exceptions.cs: Add a test.
2182
2183 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2184
2185        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2186
2187         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2188         ICollection<T> wrappers.
2189
2190 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2193
2194 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2197         NOMAP32BIT or optimize_for_xen is set.
2198
2199 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2202         mono_metadata_str_hash () instead.
2203
2204 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2207         sizeof (void*).
2208
2209         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2210
2211 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2214         flag is set.
2215
2216         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2217         throwing code correctly.
2218
2219         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2220
2221 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2224         ftnptrs created by us, handle RGCTX_FETCH correctly.
2225         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2226
2227         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2228         ftnptr added by mono_aot_get_named_code ().
2229
2230 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * mini-arm.c: Fix a few LLVM problems.
2233
2234         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2235
2236 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2237
2238         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2239         AOT compiling.
2240
2241 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2242
2243         * jit.h, method-to-ir.c: added ability to set the policy for
2244         inserting breakpoints from the break IL instruction or the
2245         Debugger.Break () API call.
2246
2247 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2250         assemblies need to be eagerly loaded.
2251
2252 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2255
2256 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2259         an argument which matches any exception.
2260
2261 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2264         optimization if the called method is gshared and marshalbyref, since gshared
2265         methods can' have wrappers. Fixes #569390.
2266
2267         * generics.cs: Add a test.
2268
2269 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2272         callable from gdb.
2273
2274 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2277
2278 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2281         since it is not supported in win2000.
2282
2283 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2286         error if loading an assembly fails.
2287         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2288
2289         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2290         if exists.
2291
2292         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2293         compiled methods.
2294
2295         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2296
2297         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2298         is not supported yet.
2299
2300         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2301
2302 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2303
2304         * method-to-ir.c: All types with variant arguments must fallback to the
2305         slow path. This makes cast of variant delegates work.
2306
2307         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2308         argument that is set to TRUE is the returned vtable slot is for a variant
2309         interface. Changed a g_print + g_assert_not_reached to a g_error.
2310
2311         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2312         a similar fashion of generic virtual methods.
2313
2314 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2315
2316         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2317         when cfg is null.
2318
2319         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2320         method using a variance aware function.
2321
2322         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2323
2324 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2325
2326         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2327         do an icall for now.
2328
2329 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2332         If LLVM decides to set the code model to Large, reset it to Default.
2333
2334 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2335
2336         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2337         stripped binaries as well.
2338
2339 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2342         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2343
2344         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2345         reg.
2346
2347 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2350         separate function.
2351
2352         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2353         as the type info to llvm.eh.selector.
2354         (exception_cb): Use the type info for filling out some fields of
2355         MonoJitExceptionInfo like the flags and the exception class. This is needed
2356         because the LLVM produced exception handling clauses might not match the original
2357         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2358
2359         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2360         separate function. Add an extra argument which returns the type infos
2361         corresponding to the exception clauses.
2362
2363         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2364         exception handling clauses.
2365
2366 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2369         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2370         to fix an AOT case.
2371
2372 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2373
2374         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2375         internal assembly.
2376
2377 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2380         llvm code.
2381
2382 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2383
2384         * mini.c (mini_method_compile): Verify the method before calling
2385         mono_compile_create_vars as this might crash since it uses method
2386         information.
2387
2388         Fixes #560196.
2389
2390 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2393         one case if AOTing, since the class might not be a concrete class.
2394
2395 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2398         functions which are now defined in mempool-internals.h.
2399
2400         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2401
2402         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2403
2404 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * mini.c:
2407         * method-to.ir.c:
2408         * mini-*.c: Properly handle generic enums.
2409
2410         Fixes #566294
2411
2412 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2415         in a few more places.
2416
2417 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2420         nullable parameters. Fixes #567351.
2421
2422 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2423
2424         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2425
2426 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2429         mono_get_generic_context_from_code () call.
2430
2431         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2432
2433 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2436         needed.
2437
2438 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2439
2440         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2441         mono_method_get_signature returns NULL. Fix #567084
2442
2443 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2446         instead of once for each module.
2447
2448 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * debugger-agent.c (ss_start): Implement step over for the last sequence
2451         point in methods.
2452
2453         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2454         have the STEP_LOC flag set.
2455
2456         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2457         fails. Fixes #566689.
2458
2459 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * mini.c (mono_add_seq_point): New helper function.
2462         (mono_save_seq_point_info): New function to save sequence point info, extracted
2463         from mini_method_compile ().
2464
2465         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2466
2467         * mini.h (MonoSeqPointInfo): New structure containing information about
2468         the sequence points of a JITted method.
2469         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2470         'bucket' field.
2471
2472         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2473         point information is stored, use a MonoSeqPointInfo structure instead of a
2474         GPtrArray. For each seq point, compute a list of successor seq points.
2475
2476         * debugger-agent.c: Use the successor list to implement step-over more
2477         efficiently: instead of single stepping until a different line/IL offset is
2478         reached, place breakpoints into all successor seq points.
2479
2480         * mini.h: Bump AOT file format version.
2481
2482 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2485
2486         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2487
2488 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2489
2490         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2491         build.
2492
2493 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2496         alloca as g_malloc is not signal safe.
2497
2498 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2501         VALGRIND_DISCARD_TRANSLATIONS.
2502
2503         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2504         checks, they are no longer needed.
2505
2506         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2507         a function into a sigctx which can handle function pointers.
2508
2509         * mini-ppc.c: Implement soft debugger support on ppc64.
2510
2511         * mini-ppc.c: Implement soft debugger support.
2512
2513 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2516
2517 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2518
2519         * mini.c (mono_get_runtime_build_info): include Mono version in
2520         the returned value.
2521
2522         * driver.c (mono_main): VERSION is now included in the string
2523         returned from mono_get_runtime_build_info()
2524
2525 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2526
2527         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2528         signatures. Fixes #565143.
2529
2530         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2531
2532 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2535
2536 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2537
2538         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2539         making max stack 10x smaller.
2540
2541 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2544
2545 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2546
2547         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2548
2549 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2550
2551         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2552         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2553
2554         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2555
2556         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2557
2558         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2559
2560         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2561         the compilation.
2562
2563 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2564
2565         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2566         raise an invalid program exception.   
2567
2568         For other opcodes that we might not handle use a g_warning and
2569         raise the exception.   Beats termination.
2570
2571         Fixes #561724
2572
2573 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2576
2577         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2578         by merging the LLVM and !MAP_32BIT cases.
2579
2580 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2581
2582         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2583         sigctx being passed in, as we have no CONTEXT available in the APC.
2584
2585         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2586         for now.
2587
2588         Code contributed under MIT/X11 license.
2589
2590 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2593         in the LLVM backend on AMD64.
2594
2595         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2596         FDE.
2597
2598         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2599
2600         * mini-llvm.c: Export mono_personality for AOT.
2601
2602         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2603
2604         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2605         implicit exception can occur.
2606
2607         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2608         OP_IMPLICIT_EXCEPTION instruction.
2609
2610         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2611
2612         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2613
2614         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2615         inside a protected block.
2616
2617         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2618         trampolines doesn't include the argument.
2619
2620         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2621         trampolines on amd64.
2622
2623         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2624         of RDI.
2625
2626         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2627         disabled for methods with clauses.
2628
2629         * mini-llvm.c: Enable support for catch clauses.
2630
2631         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2632         end of an LLVM compiled finally clause.
2633         (mono_handle_exception_internal): Save the exception handling state in TLS
2634         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2635         resume unwinding from that point.
2636
2637         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2638         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2639         to obtain the addresses of the exception handling regions.
2640
2641         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2642         finally clauses are supported.
2643
2644         * mini.c (mini_method_compile): Add support for LLVM code with exception
2645         handlers.
2646
2647 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2650         proper size.
2651
2652 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2655         as a primitive type.
2656
2657 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2660         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2661         #564000.
2662
2663 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2664
2665         * method-to-ir.c (mini_redirect_call): do not redirect the
2666         InternalAllocateStr internal call if string profiling is enabled.
2667
2668 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2671         generic methods.
2672
2673         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2674         unwind.h header file.
2675
2676         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2677         newer valgrind versions seems to handle this fine.
2678
2679 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2682         on the debugger thread.
2683
2684 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2687
2688         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2689
2690         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2691
2692         * cpu-<ARCH>.md: Make call_handler clob:c.
2693
2694         * mini.c: Reenable SSA for methods with clauses.
2695
2696         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2697         as it causes failures on x86.
2698
2699 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2700
2701         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2702         returns NULL (e.g. a bad assembly).
2703
2704 2009-12-08  Geoff Norton  <gnorton@novell.com>
2705
2706         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2707         stepping out into native code.  There were issues with nested invokes
2708         like .cctors.
2709
2710 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * mini.c (mini_method_compile): Do the disable_llvm checks early
2713         and avoid the LLVM compile pass if the checks fail.
2714
2715         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2716
2717         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2718         LLVM optimizations don't try to remove them.
2719
2720         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2721         different file so the original remains.
2722
2723 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2726
2727         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2728
2729         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2730         support for non-inline unwind descriptors.
2731
2732 2009-12-07  Geoff Norton  <gnorton@novell.com>
2733
2734         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2735         the interrupt_count slightly differently.  Native threads were never
2736         marked as resumed.
2737
2738 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2741         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2742         yet generate this info.
2743
2744         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2745
2746         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2747         client can distinguish between intptrs and longs.
2748
2749 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2752         blob.
2753
2754         * aot-runtime.c (load_function): Update after the change above.
2755
2756         * mini.h: Bump AOT file format version.
2757
2758         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2759         if the delegate class is dynamic.
2760
2761         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2762         in gshared code too using the new rgctx info type
2763         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2764
2765 2009-12-04  Geoff Norton  <gnorton@novell.com>
2766
2767         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2768         we need to track the original suspend count so the thread properly
2769         wakes up in resume_thread.
2770
2771 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2774         code.
2775
2776         * generics.cs: Add a test.
2777
2778         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2779         is 0. Simplify a lot of code using this.
2780
2781         * mini-trampolines.c (mono_delegate_trampoline): Call
2782         mono_create_static_rgctx_trampoline () before saving the final address in
2783         delegate->method_code, to avoid calling it each time a delegate is first called.
2784
2785         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2786         which need static rgctx trampolines.
2787
2788         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2789         keyed on the method+addr pair, since addr could be either the method addr or
2790         an unbox trampoline in the AOT case. Fixes #560246.
2791
2792 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2793
2794         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2795         place it was called before too.
2796
2797 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2800         if no security manager is present, to speed up the AOT case. Call
2801         mono_class_vtable () full with raise_on_error == TRUE instead.
2802
2803 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2806         the local optimization passes can take its result into account. Fixes
2807         #559876.
2808
2809         * exceptions.cs: Add a test.
2810
2811 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2812
2813         This patch is contributed under the terms of the MIT/X11 license
2814
2815         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2816
2817 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2820
2821         * debugger-agent.c: Rework the handling of stack traces of running threads to
2822         avoid crashes if compute_frames () tries to walk the stack of running thread.
2823
2824         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2825
2826         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2827
2828         * mini.h (StackFrameInfo): Add an 'lmf' field.
2829
2830 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * debugger-agent.c (suspend_current): Always set really_suspended.
2833
2834         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2835
2836         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2837
2838 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2839
2840         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2841         really suspended.
2842
2843 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2846
2847 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2848
2849         * mini-trampolines.c: Fix MSVC build.
2850
2851 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2852
2853         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2854
2855 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2858         the instruction following an OP_FCOMPARE is optimized away.
2859
2860 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2863         emit_autoreg () into this arch-specific function.
2864
2865         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2866         code, it is no longer needed.
2867
2868         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2869
2870         * mini.h: Bump AOT file format version.
2871
2872         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2873         using the sorted_code_offsets array, instead of reading it from the
2874         exception debug info.
2875         (load_method): Call mono_aot_find_jit_info instead of
2876         decode_exception_debug_info ().
2877
2878         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2879         LLVM compiled as a flag.
2880
2881 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * debugger-agent.c (resume_thread): Fix a warning.
2884
2885         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2886         generated.
2887
2888 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2891         contents to MonoAotFileInfo.
2892
2893 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2896         Put all binary data into a giant blob, similarly to the way .net assemblies
2897         store binary data. Emit offset tables in a compact form to reduce their size.
2898
2899         * mini.h: Bump AOT file format version.
2900
2901         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2902         places.
2903
2904         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2905         avoid linear searches at runtime.
2906
2907         * aot-runtime.c (find_symbol): Update this to use the hash.
2908
2909         * mini.h: Bump AOT file format version.
2910
2911 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2914         container.
2915
2916         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2917         too.
2918
2919         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2920         the distribution of got slot types.
2921
2922         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2923
2924         * method-to-ir.c: Add support for generating explicit null checks.
2925
2926 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2929         on a random thread if possible.
2930
2931         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2932         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2933         correctly.
2934
2935         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2936         regs. Pass the real size of the regs array to mono_unwind_frame ().
2937
2938         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2939         ones instead.
2940
2941 2009-11-24  Geoff Norton  <gnorton@novell.com>
2942
2943         * mini-darwin.c: Work around apple bug rdar://7209349  See
2944         http://openradar.appspot.com/7209349 for details.  Synopsis,
2945         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2946         never been initialized before.
2947
2948 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2951
2952         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2953
2954 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2957         OP_SHL_IMM is not 32 bit.
2958
2959 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2960
2961         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2962
2963 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2966         encountered.
2967
2968         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2969         > 0 since some threads can resume if their resume_count is > 0.
2970         (invoke_method): Avoid reading freed memory.
2971
2972         * debugger-agent.c (process_suspend): Extract the suspend code from
2973         process_single_step_inner () to a separate function. Rework the code to prevent
2974         races between this function and thread interrupts.
2975
2976         * debugger-agent.c (suspend_current): Check the resume_count field instead
2977         of resume_one so suspends+resumes during single threaded invokes work
2978         correctly.
2979
2980 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2983         to make the generated code smaller.
2984
2985         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2986         sequence generated by recent LLVM versions.
2987
2988         * mini-llvm.c: Add support for a few simple cases which weren't supported
2989         before.
2990
2991         * mini-trampolines.c (mono_magic_trampoline): Don't call
2992         mono_arch_get_vcall_slot () when llvm is enabled.
2993
2994         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2995
2996         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2997         into a new function called common_call_trampoline () which is used by the
2998         llvm vcall trampoline as well.
2999
3000         * debugger-agent.c: Implement single threaded invokes.
3001
3002         * debugger-agent.c: Revert change which broke the agent on linux.
3003
3004         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3005         #557606.
3006
3007         * generics.cs: Add a test.
3008
3009 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3010
3011         * debugger-agent.c: Fix the cygwin build.
3012
3013 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3014
3015         * cprop.c: Remove this unused file.
3016
3017 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3020         #557262.
3021
3022         * basic.cs: Add a test.
3023
3024 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3027         in one more place.
3028
3029 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3030
3031         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3032         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3033         it. Use this flag to control llvm related code paths instead of #ifdef
3034         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3035         AOT code.
3036
3037         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3038
3039         * mini.h: Bump AOT file format version.
3040
3041         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3042         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3043
3044         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3045         was used as an assembly filter.
3046
3047 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * unwind.c: Fix support for ppc.
3050
3051         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3052         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3053
3054 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3057         port.
3058         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3059         added by the ps3 changes.
3060
3061 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3062
3063         * mini-gc.c: Resurrect this, so at least it compiles.
3064
3065         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3066
3067 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3068
3069         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3070         create_event_list () so assembly filters can be used.
3071
3072         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3073         from the LMF.
3074
3075 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3078         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3079         is disabled.
3080
3081         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3082         classes for char/bool too.
3083
3084         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3085
3086         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3087         used.
3088
3089         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3090         Fix warnings.
3091
3092 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3093
3094         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3095         
3096         Code contributed under MIT/X11 license.
3097
3098 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3099
3100         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3101         threads in native code work.
3102
3103         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3104         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3105         version.
3106
3107 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3108
3109         * debugger-agent.c: Implementation for Windows platform.
3110
3111         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3112         primitives. Use SEH to implement breakpoints and single stepping.
3113
3114         * mini-x86.h: Enable soft debugger on Windows.
3115
3116         Code contributed under MIT/X11 license.
3117
3118 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3121         under XEN. Fixes #522894.
3122
3123         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3124
3125         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3126         interface calls in LLVM AOT code.
3127
3128         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3129         is found.
3130
3131         * mini-llvm.c: Add support for OP_VPHI.
3132
3133         * objects.cs: Add a test.
3134
3135 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3138         this is called on the debugger thread.
3139
3140 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * mini-llvm.c: Add soft-float support.
3143
3144         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3145         FCALL which returns an R4.
3146
3147         * driver.c (mono_main): Add a missing '\n'.
3148
3149         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3150         platforms which doesn't support the LLVM IMT trampoline.
3151
3152 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3153
3154         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3155
3156         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3157
3158         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3159         virtual calls.
3160
3161         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3162
3163 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3164
3165         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3166         Instead of emitting a method_order table, sort the contents of the code_offsets
3167         table and do a binary search in the sorted table. The previous approach doesn't
3168         work with LLVM which emits methods in a arbitrary order.
3169
3170         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3171         in the .eh_frame section in ELF files.
3172
3173         * mini.h: Bump corlib file format version.
3174
3175         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3176
3177         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3178         LDMIA->LDM macro name change.
3179
3180 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3183         x86.
3184
3185         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3186         SVN.
3187
3188         * aot-compiler.c: Ditto.
3189
3190         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3191         &align to mini_type_stack_size_full ().
3192
3193         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3194
3195         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3196
3197 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * mini-arm.c: Compute the stack space used by arguments using
3200         mini_type_stack_size_full ().
3201
3202 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3203
3204         * optflags-def.h: Remove dead TREEPROP optimization.
3205
3206 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3207
3208         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3209
3210         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3211
3212 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * driver.c (mono_jit_parse_options): New public API function to parse options
3215         as done by the runtime executable.
3216
3217         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3218         when handling named arguments.
3219
3220 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3221
3222         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3223         for passing small vtypes in registers, make the CallInfo structures more
3224         similar to the code on the other platforms.
3225
3226         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3227         the code in the prolog requires it.
3228
3229 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3232         (koush@koushikdutta.com).
3233
3234         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3235         where the thunk memory should be allocated from. Fixes appdomain unloading
3236         on arm.
3237
3238 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3241         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3242
3243 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3246         AOT, as it is not implemented yet.
3247
3248         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3249
3250 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3251
3252         * debugger-agent.c: Fix windows build.
3253
3254 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3255
3256         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3257         after the client connects/disconnects.
3258
3259         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3260         when an exception of a given type is thrown.
3261
3262         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3263         only on an uncaught exception.
3264
3265         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3266
3267         * debugger-agent.c: Add a 'launch' option.
3268
3269 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * debugger-agent.c: Add a 'timeout' option.
3272
3273 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3274
3275         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3276         the JDWP agent.
3277
3278 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * debugger-agent.c (set_breakpoint): Emit a log message.
3281
3282 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3283
3284         * mini-arm.c: Fix the arm build.
3285
3286 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3287
3288         * aot-compiler.c: don't leak the value returned from
3289         mono_type_full_name().
3290
3291 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3292
3293         * debugger-agent.c: defer including mono-mutex.h until we know the
3294         agent is supported.
3295
3296 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3297
3298         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3299         of pthreads directly.
3300
3301         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3302         exception handlers. Pass info argument.
3303
3304         * mini.h: Adjust signatures of soft debugger functions to pass void*
3305         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3306
3307         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3308         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3309         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3310         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3311
3312         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3313
3314         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3315         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3316         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3317         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3318
3319         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3320
3321         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3322
3323         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3324
3325         * mono-semaphore.h: Skeleton implementation for Windows.
3326
3327         Code contributed under MIT/X11 license.
3328
3329 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3330
3331         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3332
3333         Code contributed under MIT/X11 license.
3334
3335 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3336
3337         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3338
3339         Code contributed under MIT/X11 license.
3340
3341 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3344         debug info to 100 because 10 still slows down gdb too much.
3345
3346         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3347         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3348         them in the wrappers.
3349
3350 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3353
3354         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3355
3356         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3357         function mono_aot_get_array_helper_from_wrapper ().
3358
3359         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3360         array helper methods.
3361
3362 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3363
3364         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3365         the value was loaded from memory.
3366
3367         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3368         the value was loader from there.
3369
3370         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3371         without constant swizzle.
3372
3373 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3374
3375         * mini-amd64.c: Put soft debugger functions behind a
3376         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3377
3378         * mini-amd64.h: disable the soft debugger in windows.
3379
3380         Code contributed under MIT/X11 license.
3381
3382 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3383
3384         * mini-x86.c: Put soft debugger functions behind a
3385         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3386
3387         Code contributed under MIT/X11 license.
3388
3389 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3390
3391         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3392         to mono_arch_find_jit_info_ext.
3393
3394         Code contributed under MIT/X11 license.
3395
3396 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3397
3398         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3399
3400         * debugger-agent.c: Add support for filtering events by assemblies.
3401
3402         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3403         the agent is not enabled.
3404
3405 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3406
3407         * exceptions-x86.c: hopefully last change to fix the windows build.
3408         This one courtesy of Jonathan Chambers.
3409
3410 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3411
3412         * debugger-agent.c: remove unused function.
3413
3414 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3415
3416         * debugger-agent.c: add #ifdefs for a few header files.
3417         * mini-x86.h: disable the soft debugger in windows.
3418         Step 1 of 2 to make this compile on windows with gcc.
3419
3420 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3423         as it breaks the build.
3424
3425 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3426
3427         Merge the soft debugger branch.
3428
3429         * debugger-agent.h debugger-agent.c: New files containing the soft
3430         mode debugger module.
3431
3432         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3433         at the appropriate locations.
3434
3435         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3436         opcode.
3437
3438         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3439         enable/disable single stepping.
3440
3441         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3442         which returns all information in a StackFrameInfo structure, and can handle the
3443         LMF frames added by the debugger.
3444
3445         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3446         about an LMF frame.
3447
3448         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3449         walker function which works on a specific thread and passes a StackFrameInfo
3450         structure to its callback.
3451
3452         * mini.c (mini_init): Initialize the debugger agent.
3453
3454         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3455
3456         * mini-ops.h: Add OP_SEQ_POINT opcode.
3457
3458         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3459         arguments to the debugger agent.
3460
3461 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3464         speed things up.
3465
3466         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3467
3468         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3469
3470         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3471
3472         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3473         if needed.
3474         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3475         sets the IMT argument and makes a virtual call.
3476
3477         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3478
3479 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3480
3481         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3482         the windows build.
3483
3484 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3485
3486         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3487         runtime. Fixes #551228.
3488
3489 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3490
3491         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3492
3493         * basic.cs: Add a test.
3494
3495         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3496         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3497         CONSTRAINED. Fixes #550964.
3498
3499         * generics.cs: Add a test.
3500
3501 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3502
3503         * mini-posix.c (add_signal_handler): Use
3504         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3505
3506 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3507
3508         Contributed under the terms of the MIT/X11 license by
3509         Jerry Maine <crashfourit@gail.com>.
3510
3511         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3512         sse4a for simd intrinsics.
3513
3514         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3515         sse4a for simd intrinsics.
3516
3517 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3520         instead of inst_p1 which is not the same on ILP32 platforms.
3521
3522 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3525         not the mscorlib one before calling mono_get_lmf_addr.
3526
3527         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3528         of the ip to the LMF.
3529
3530         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3531         immediate in the op->op_imm optimization.
3532
3533         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3534         understand. VTypes now work, but are not abi compliant, as they are
3535         split into 4 byte parts instead of 8.
3536         (emit_memcpy): Fix the unrolled case to work on the PS3.
3537
3538         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3539
3540         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3541         the default when static linking.
3542
3543         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3544
3545         * aot-compiler.c: Add an autoreg option to automatically register
3546         statically linked aot modules using ELF .ctors.
3547
3548         * genmdesc.pl: Add __ppc64__ to allowed defines.
3549
3550 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3553         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3554
3555 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3556
3557         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3558
3559 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3560
3561         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3562         which will contain the domain where the method was found.
3563
3564         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3565         mini_jit_info_table_find ().
3566
3567         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3568
3569         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3570
3571 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3572
3573         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3574         set, its not supported yet.
3575
3576 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3579         iface wrapper is not found.
3580         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3581
3582 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3585         which have a different name.
3586
3587         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3588         wrappers and Array.GetGenericValueImpl ().
3589
3590         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3591         because of the change above.
3592
3593         * generics.cs: Add a test for full aot + generic array ifaces.
3594
3595 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3596
3597         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3598         that hides the previous one.
3599
3600 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3603         marshalled. Fixes #541623.
3604
3605 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3608
3609 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3612
3613 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3614
3615         * mini-posix.c (sigprof_signal_handler):
3616         Implemented support for building stat call chans in different ways.
3617
3618 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3619
3620         * mini-exceptions.c (mono_find_jit_info):
3621         Also check that a jit info has been found (fixes a profiler crash).
3622
3623 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3624
3625         * mini.c (mono_codegen):
3626         Call mono_profiler_code_buffer_new with correct code address.
3627
3628 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3629
3630         * driver.c (mono_main): Change the date in the copyright.
3631
3632 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3633
3634         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3635         allocator in shared generic code for open classes, because we
3636         can't get those classes' vtables.  We need to make managed
3637         allocators not depend on the vtable at compile-time to solve this.
3638
3639 2009-10-13  Martin Baulig  <martin@ximian.com>
3640
3641         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3642         `const guint8 *trampoline' argument; send both the old and the new
3643         notification.
3644
3645 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3648         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3649         (can_marshal_struct): Skip structures with auto layout.
3650
3651         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3652
3653 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3656         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3657         a variable to hold the stack slot used by the int<->float conversion opcodes.
3658
3659         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3660
3661 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3664         when using full-aot.
3665
3666 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3669         each instance of Comparer<T>.
3670
3671         * generics.cs: Add a new test.
3672
3673 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * driver.c (parse_debug_options): Add a 'gdb' option.
3676
3677         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3678
3679         * image-writer.c: Add support for emitting the image into a memory buffer.
3680
3681         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3682
3683         * aot-compiler.c: Add support for registering debug info with GDB using the
3684         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3685         MONO_XDEBUG to 'gdb'.
3686
3687 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3690         gdb mode.
3691
3692 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3695         can be used to set breakpoints in gdb.
3696
3697         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3698         segment to an absolute address.
3699
3700 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3701
3702         * method-to-ir.c: Use the managed array allocator method if
3703         available.
3704
3705 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3706
3707         * aot-compiler.c : Fix the MSVC builds
3708
3709         Code is contributed under MIT/X11 license.
3710
3711 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3714         avoid registering 1 symbol file per method with gdb.
3715
3716 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * mini-sparc.c: Fix the handling of enums with base type long.
3719
3720         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3721
3722         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3723         instead of using type->data.klass as the later doesn't work with generics.
3724
3725 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3726
3727         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3728         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3729         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3730         works differently now and we don't handle it in the JIT anymore.
3731
3732         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3733         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3734         the Thread class split.
3735
3736 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * driver.c: Don't run tests with the obsolete treeprop optimization.
3739
3740         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3741         variable volatile. Fixes #541577.
3742
3743         * basic-calls.cs: Add a new test.
3744
3745         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3746
3747 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3750         work/required with recent iphone sdk versions.
3751
3752         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3753         structures.
3754
3755         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3756         in the VCALL decomposition code.
3757
3758 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3761
3762         * basic.cs: Add a test.
3763
3764         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3765         generic invokes.
3766
3767         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3768         searches all the domains of the current thread.
3769
3770         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3771
3772 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3775         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3776
3777         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3778         for non-jit trampolines.
3779
3780         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3781
3782         * aot-compiler.c (add_wrappers): Ditto.
3783
3784         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3785         the size of the param area used by dyn_call to 6 which covers the majority of
3786         methods.
3787
3788         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3789
3790         * mini-arm.c: Implement support for passing/receiving
3791         longs and receiving floats in the dyn_call code.
3792
3793         * mini-amd64.c: Implement support for receiving vtypes in registers in
3794         the dyn_call code.
3795
3796         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3797         the dyn_call code.
3798
3799 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3800
3801         * mini-arm.c (get_call_info): Return more precise information in
3802         ArgInfo->regtype.
3803         (dyn_call_supported): Use the information in CallInfo.
3804
3805         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3806
3807         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3808         code.
3809
3810         * mini-arm.c: Update after the dyn_call api changes.
3811
3812         * mini.c (mini_create_jit_domain_info): Register a destructor function
3813         for the runtime_invoke_hash.
3814
3815         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3816         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3817         this function.
3818         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3819         (dyn_call_supported): Simplify this by using get_call_info ().
3820         (mono_arch_dyn_call_free): New destructor function.
3821
3822         * generics.cs: Remove a printf.
3823
3824         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3825
3826         * mini-arm.c: Add support for enum return values and passing a few arguments
3827         on the stack.
3828         
3829         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3830         dyn invoke.
3831
3832         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3833
3834         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3835         the dynamic invoke wrappers.
3836
3837         * mini-arm.c: Implement OP_DYN_CALL for arm.
3838
3839         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3840         supported by the dynamic runtime invoke wrapper.
3841
3842         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3843         runtime invoke wrapper.
3844
3845         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3846         if possible when running with full-aot.
3847
3848         * mini-ops.h: Add OP_DYN_CALL opcode.
3849
3850         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3851         with dynamic arguments lists similar to libffi.
3852
3853 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3856         
3857         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3858         to NEWARR.
3859
3860         * iltests.il.in: Add a new test.
3861         
3862 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * aot-compiler.c (add_generic_instances): Add more instances of
3865         GenericEqualityComparer.
3866
3867 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3868
3869         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3870
3871 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3872
3873         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3874         comments on some functions that now can fail.
3875
3876 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3877
3878         * Makefile.am: Add Info.plist to EXTRA_DIST
3879
3880 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3881
3882         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3883         static synchronized wrappers. Fixes #539500.
3884
3885 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3886
3887         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3888         properly.
3889
3890 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3891
3892         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3893         lmf before calling filter clauses as well. Fixes #539550.
3894
3895         * exceptions.cs: Add a test.
3896         
3897 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3898
3899         * aot-compiler.c (add_generic_class): Add instances of
3900         Array.GetGenericValueImpl as well.
3901
3902         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3903         can be tested too.
3904
3905         * generics.cs: Add a fullaot linq test.
3906
3907 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3910         reg r1 on arm.
3911
3912 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3913
3914         * mini-trampolines.c (mono_delegate_trampoline) : Call
3915           mono_cominterop_get_invoke if the delegate target object
3916           is a COM object.
3917
3918         Code is contributed under MIT/X11 license.
3919
3920 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3921
3922         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3923         internal call is defined outside platform code. Reduce code 
3924         duplication with existing [Method|Field]AccessException
3925
3926 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3927
3928         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3929         if the return value is a small struct passed on regs.
3930
3931 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3934
3935         * mini-codegen.c: Enable the cpu description validation for arm.
3936
3937 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3940         test which depends on structs to objects.cs.
3941         
3942         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3943         require object model related stuff working.
3944
3945         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3946
3947         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3948
3949         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3950         against the instruction metadata in mini-ops.h. amd64 only for now.
3951
3952         * mini-ops.h: Fix some instruction descriptions.
3953
3954         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3955         unused instructions.
3956
3957 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * exceptions.cs: Add a new test.
3960
3961 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3962
3963         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3964
3965 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3968         skip empty phi opcodes.
3969         
3970         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3971         correctly by zero extending after loads. Skip methods containing calls
3972         to the monitor enter/exit trampolines.
3973
3974         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3975         when calling mono_thread_force_interruption_checkpoint ().
3976
3977         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3978
3979         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3980         64 bit thunks.
3981         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3982
3983         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3984         bootstrap could run.
3985
3986 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3987
3988         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3989
3990 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3991
3992         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3993         of the method to
3994         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3995         LLVM might be very short.
3996
3997         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3998         in OP_THROW/RETHROW.
3999
4000         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
4001         alignment on osx.
4002
4003 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4006         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4007         LLVM might be very short.
4008
4009 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4012         the alignment for the value of sp.
4013
4014 2009-09-01  Geoff Norton  <gnorton@novell.com>
4015
4016         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4017         managed wrappers in full aot.
4018
4019 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4022
4023 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4026
4027 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4030
4031         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4032         saved info.
4033
4034         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4035
4036         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4037         depend on the info MonoMethodHeader which could be missing in IL stripped
4038         assemblies.
4039
4040 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4043         they are only 4 byte aligned.
4044
4045 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4048         was done previously, since using SP causes too many problems.
4049
4050         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4051         frames without a frame pointer works.
4052
4053         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4054         global register in methods with calls, since the calls can go through
4055         a static rgctx trampoline which doesn't save it.
4056
4057 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4060
4061 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4064
4065 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4066
4067         * method-to-ir.c: Fix warnings for uninitialized variables.
4068
4069 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4070
4071         * mini-exceptions.c:
4072         * aot-compiler.c: Fix printf warnings.
4073
4074 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4077         Add GetGenericValueImpl<string>.
4078         
4079         * aot-compiler.c (add_generic_instances): Add instances of
4080         GenericEqualityComparer<T> for primitive types. Only emit the array
4081         wrappers into the mscorlib image.
4082
4083 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4086         the methods_loaded array using amodule->info->nmethods.
4087
4088         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4089         (MONO_AOT_FILE_VERSION): Bump this.
4090
4091         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4092         to work.
4093
4094         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4095         MonoJitInfo doesn't belong to its methods aot image.
4096
4097 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4100
4101         * mini-arm.c: Fix warnings.
4102         
4103         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4104
4105         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4106         supports it.
4107
4108 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4111         avoid clobbering IP.
4112
4113         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4114         hold the trampoline argument, so its initial value is available during
4115         debugging.
4116
4117 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4118
4119         * exceptions-arm.c:
4120         * exceptions-hppa.c:
4121         * mini.c:
4122         * exceptions-s390x.c:
4123         * exceptions-mips.c:
4124         * exceptions-ppc.c:
4125         * exceptions-sparc.c:
4126         * exceptions-alpha.c:
4127         * aot-runtime.c:
4128         * mini-trampolines.c:
4129         * exceptions-x86.c:
4130         * exceptions-s390.c: add and use #define's instead of sizeof()
4131         for MonoJitInfo and MonoJitInfoTable.
4132
4133 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4134
4135         * tramp-arm.c:
4136         * tramp-amd64.c:
4137         * tramp-ppc.c:
4138         * tramp-x86.c: use a #define instead of sizeof() for a few
4139         structures that use a zero-length array.
4140
4141 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4142
4143         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4144         case when the method is dynamic. Fixes #529238.
4145
4146 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4149         of asserting when a method is JIT compiled in full-aot mode.
4150
4151 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4152         
4153         Contributed under the terms of the MIT/X11 license by
4154         Jerry Maine <crashfourit@gail.com>.
4155         
4156         * fixed wrong dates in changelog.
4157
4158 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4159         
4160         Contributed under the terms of the MIT/X11 license by
4161         Jerry Maine <crashfourit@gail.com>.
4162
4163         * basic-simd.cs: added test for packed double square root.
4164         * cpu-amd64.md: added opcode info for packed double square root.
4165         * cpu-x86.md: added opcode info for packed double square root.
4166         * mini-ops.h: added IR opcode for packed double square root.
4167         * mini-x86.c: added IR to native translation code for packed double square root.
4168         * mini-amd64.c: removed todo for packed double square root.
4169         * simd-intrinsics.c: added method to IR opcode converstion for
4170         packed double square root.
4171
4172 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4173
4174         Contributed under the terms of the MIT/X11 license by
4175         Jerry Maine <crashfourit@gail.com>.
4176
4177         * mini-amd64.c: Added a change to help tell the difference as 
4178         to what perpose the xmm register is being used--mainly to help
4179         with debuging.
4180         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4181         (one used for special cases) xmm registers for both fp
4182         and simd ops. Added define to turn on new feature in the regalloc
4183         that allows fp and simd ops to share the xmm regs happily.
4184         * codegen.c: Added code to detect for which perpose an xmm reg is
4185         being used (fp or simd) and to translate back and forth to the
4186         correct logical reg bank (fp or simd) for 'spill load's.
4187
4188 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4189
4190         Contributed under the terms of the MIT/X11 license by
4191         Jerry Maine <crashfourit@gail.com>.
4192
4193         * basic-simd.cs: Added tests for stressing the regalloc when running with
4194         16 simd regs and when simd and fp ops share the same reg bank.
4195
4196 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4197
4198         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4199         in shared generic code, we might have to look up the class in the
4200         RGCTX.  If we use the class directly, compute its GC descriptor.
4201
4202 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4203
4204         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4205
4206 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4207
4208         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4209         check for errors. Fixed the case when the class with the Main
4210         method is broken.
4211
4212 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4213
4214         Contributed under the terms of the MIT/X11 license by
4215         Jerry Maine <crashfourit@gail.com>.
4216
4217         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4218
4219 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4220
4221         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4222
4223 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4224
4225         * method-to-ir.c: Fix naming of stelem and ldelem.
4226
4227 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4228
4229         * driver.c (main_thread_handler): Check that the assembly loaded
4230         matches the filename when doing AOT.
4231
4232 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4233
4234         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4235         call it anymore.
4236
4237         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4238         utils/mono-sigcontext.h).
4239
4240         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4241         #ifdef.
4242
4243 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4244
4245         * mini.c (mono_codegen):
4246         Call profiler hook to keep track of method code buffers.
4247
4248 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4249
4250         * method-to-ir.c: Invoke write barriers for the
4251         Interlocked.(Compare)Exchange JIT intrinsics.
4252
4253 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4254
4255         * Makefile.am (version.h): Fix issues when built out of tree.
4256         Remove some redundant 'grep's piped through 'sed's.
4257
4258 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4259
4260         This patch is contributed under the terms of the MIT/X11 license
4261
4262         * mini-ppc.c (mono_arch_output_basic_block):
4263         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4264         for bits 32-47 with signed load/store diplacements for bits
4265         48-63.  Use prefered base/offset order for indexed form.
4266         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4267         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4268         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4269         OP_LOADI2_MEMBASE): Same.
4270         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4271         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4272         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4273         indexed form.
4274         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4275         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4276         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4277         OP_LOADI1_MEMINDEX): Same
4278         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4279         OP_STORER8_MEMINDEX): Same
4280         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4281         computations.
4282         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4283         for bits 32-47 with signed load/store diplacements for bits
4284         48-63.  Use prefered base/offset order for indexed form.
4285
4286 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4287
4288 This patch is contributed under the terms of the MIT/X11 license
4289
4290         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4291         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4292         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4293         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4294         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4295         cfg->stack_usage to avoid size warnings.
4296         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4297         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4298         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4299         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4300         to convert.
4301         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4302         after code varible is initialized.
4303         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4304         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4305         (mono_arch_emit_epilog): 
4306         Move Use ppc_load32 for cfg->stack_usage to avoid size
4307         warnings.
4308
4309 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4310
4311         * method-to-ir.c: The write barrier doesn't do the store anymore,
4312         so we have always to emit it.  Also, emit the wbarrier after the
4313         store.
4314
4315 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4318         for argument count 3 too.
4319
4320 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4321
4322         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4323         the caller handle the exceptions.
4324         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4325         method. Fixes #524498.
4326
4327 2009-07-22  Geoff Norton  <gnorton@novell.com>
4328
4329         * mini-exceptions.c: Fix build on ia64.
4330
4331 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4332
4333         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4334         barriers.
4335
4336 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4339         code.
4340
4341 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4342
4343         * basic-simd.cs (Main): Pass args to the test driver.
4344
4345 2009-07-20  Geoff Norton  <gnorton@novell.com>
4346
4347         * mini-x86.h: Fix the x86 version guards to use Apple's
4348         properly defined macros.
4349
4350 2009-07-20  Geoff Norton  <gnorton@novell.com>
4351
4352         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4353         aligned access.
4354
4355 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4358         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4359         the information which is needed for invokes, so only one locking+hash table
4360         lookup is needed.
4361
4362         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4363         
4364         * aot-compiler.c (add_generic_instances): Emit instances of 
4365         GenericComparer<T> for primitive types.
4366
4367 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4368
4369         * mini-posix.c: Fix linux build.
4370
4371 2009-07-19  Geoff Norton  <gnorton@novell.com>
4372
4373         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4374         mono_gdb_render_native_backtraces
4375         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4376         so we implement the sane semantics to the runtime here
4377         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4378         so we need to call it differently (mono_gdb_render_native_backtraces)
4379         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4380         here for default implementations.
4381         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4382         support Apple's weird syscall (SYS_fork) implementation and not busy
4383         loop in abort() on native crashes on OSX anymore.
4384
4385 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * aot-runtime.c (load_method): Change the handling of the
4388         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4389         are used.
4390
4391         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4392
4393 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4396         seems to break the aot tests.
4397         
4398         * mini.c (mono_patch_info_equal): Fix the handling of 
4399         MONO_PATCH_INFO_RGCTX_FETCH.
4400
4401 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4402
4403         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4404
4405         * mini.c (mono_patch_info_hash): Fix the handling of 
4406         MONO_PATCH_INFO_INTERNAL_METHOD.
4407         (mono_patch_info_equal): Ditto.
4408
4409 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4412         in a few places.
4413         
4414         * mini-llvm.c: Add some infrastructure for AOT support.
4415
4416 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * mini-llvm-cpp.c: Update to the latest llvm api.
4419         
4420         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4421         option to false to prevent llvm from installing signal handlers which
4422         trip up the gc.
4423         
4424 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4425
4426         * cpu-x86.md:
4427         * cpu-amd64.md: Revert previous change as those instructions
4428         take 2 separate arguments. Remember to read the arch docs more
4429         carefully next time.
4430
4431 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4434
4435 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4436
4437         * mini-ppc.c: exploit multiple load/store units if available (rest of
4438         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4439         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4440
4441 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4442
4443         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4444         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4445
4446 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * cpu-x86.md: Fix missing clobbering from trancendental simd
4449         ops.
4450
4451         * cpu-amd64.md: Same.
4452
4453 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4454
4455         Contributed under the terms of the MIT/X11 license by
4456         Jerry Maine <crashfourit@gail.com>.
4457
4458         * basic-simd.cs: Added tests for single and doulble indexers.
4459
4460         * cpu-amd64.md: Added simd opcode information.
4461
4462         * mini-amd64.c: Added IR to native simd generation code.
4463         Added simd register names and function that returns them.
4464
4465         * mini-amd64.h: Added marcos to turn on simd code compilation in
4466         amd64. Added max simd register count marco. Added caller/callee
4467         register mask marcos. Added marcos to use simd register bank.
4468
4469         * mini.h: Added helper marco for shufling dwords and simple
4470         floats.
4471
4472 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4475
4476         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4477
4478         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4479         the length of the native code as well.
4480
4481         * basic-simd.cs: Add a test for #521662.
4482
4483 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4484
4485         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4486
4487 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4488
4489         * mini.c: Register function for getting the IP from a signal
4490         context with metadata.
4491
4492 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4495         call a generic class init trampoline if needed. Fixes #519336.
4496
4497         * generics.cs: Add a test.
4498         
4499 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4500
4501         * method-to-ir.c: When doing a call which might be remote from
4502         shared generic code to other shared code with open type arguments,
4503         get the remoting invoke wrapper from the RGCTX and do an indirect
4504         call to it.
4505
4506 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4509         after the unbox trampoline in the full-aot case.
4510
4511 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4512         
4513         * mini.c: Move initialization of jit_mutex before debugger initialization
4514         
4515         to avoid crashes.
4516         
4517         
4518         * Info.plist: added Info.plist and link flag to enable the mono executable
4519         to access other processes. Requires codesigning of the executable to work.
4520         
4521         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4522         
4523         compile on OS X.
4524         
4525
4526 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4529
4530 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4533         when the generic instance is an instantiation of a subclass of the
4534         methods class. Fixes #517166.
4535
4536 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4539         code.
4540
4541         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4542         AOTed code.
4543
4544         * CMakeLists.txt: Add minimal support for installation.
4545
4546 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4547
4548         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4549         determine whenever a method is directly callable to a separate function.
4550
4551         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4552         needed ones as a result of the previous change.
4553
4554         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4555         type of register arrays.
4556
4557         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4558         type of register arrays.
4559
4560 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4561         
4562         Contributed under the terms of the MIT/X11 license by
4563         Jerry Maine <crashfourit@gail.com>.
4564
4565         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4566
4567 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4568
4569         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4570
4571 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4572
4573         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4574         dump of structure return value. Fix some formatting.
4575         * cpu-s390x.md: Fix lengths of instruction sequences.
4576         * mini-s390.c: Minor formatting changes.
4577
4578 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4581         Use sigaction on freebsd as well.
4582
4583 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4586         uses #ifdef on it.
4587         
4588         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4589
4590 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4591
4592         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4593
4594 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4595
4596         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4597
4598 2009-06-20  Martin Baulig  <martin@ximian.com>
4599
4600         * debug-mini.c
4601         (MonoDebuggerThreadFlags): New enum typedef.
4602         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4603         (mono_debugger_thread_created): Added `gpointer func' argument;
4604         initialize the new `thread_flags' field.
4605
4606 2009-06-18  Martin Baulig  <martin@ximian.com>
4607
4608         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4609         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4610
4611         * debug-debugger.c
4612         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4613         flag in `MONO_DEBUGGER__info.runtime_info'.
4614
4615         * driver.c
4616         (mono_main): Call mini_debugger_set_attach_ok() if generics
4617         sharing is disabled.
4618
4619 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4620
4621         * aot-compiler.c (add_wrappers): Fix a warning.
4622
4623         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4624         the ppc load/store macro changes.
4625
4626 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4627
4628         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4629
4630         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4631         not just the got symbol.
4632
4633         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4634         on ppc.
4635
4636         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4637         ppc.
4638         
4639         * aot-compiler.c: Remove some fixmes.
4640
4641         * driver.c (mono_main): Print a helpful message when cross-compiling.
4642
4643         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4644
4645         * method-to-ir.c (initialize_array_data): Do the optimization if the
4646         target byte order is little endian, instead of the host byte order.
4647
4648         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4649         wrappers into the mscorlib image, Emit a unique plt symbol for each
4650         image, emit symbols for plt entries.
4651
4652         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4653         a .size directive.
4654         
4655 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * aot-compiler.c (add_wrappers): Avoid calling 
4658         mono_marshal_get_type_info () since it can assert for some types.
4659
4660         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4661         ldtoken are used inside wrappers.
4662
4663         * helpers.c: Add support for prefixing tools with the arch name.
4664
4665         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4666         quantities when using ilp32.
4667
4668         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4669         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4670
4671         * image-writer.c: Use .long on ilp32.
4672
4673         * aot-compiler.c: Use 32 bit loads on ilp32.
4674         
4675 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4676
4677         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4678
4679         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4680
4681         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4682
4683         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4684         second got slot of every aot image.
4685         
4686         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4687         aot on platforms with function pointers.
4688
4689         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4690         support for aot/full aot on ppc/ppc64.
4691         
4692         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4693         arguments which are needed on ppc.
4694
4695         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4696         argument.
4697
4698         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4699         
4700         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4701
4702         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4703
4704         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4705
4706         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4707
4708 2009-06-17  Geoff Norton  <gnorton@novell.com>
4709
4710         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4711
4712 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4713
4714         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4715         to control whenever the dwarf writer is in xdebug or aot mode.
4716         (emit_class_dwarf_info): Use a separate abbrev for structures without
4717         children.
4718
4719         * aot-compiler.c: Pass the appending parameter to 
4720         mono_dwarf_writer_create ().
4721
4722         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4723         falls through to its next bblock. Fixes #513931.
4724
4725         * iltests.il: Add a test.
4726
4727         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4728         infor even if emit_line is FALSE, as the apple linker seems to require it.
4729
4730         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4731
4732         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4733         gcc does.
4734         (emit_fde): Ditto.
4735
4736 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4739         mips build.
4740
4741 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4742
4743         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4744         'has_call_handler' fields.
4745
4746         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4747
4748         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4749         first bblock if not needed. Fixes #512790.
4750         
4751 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4752
4753         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4754         
4755         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4756         wrappers.
4757
4758         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4759         remoting-invoke-with-check wrappers, which are not needed when running with
4760         full-aot, since it doesn't support remoting.
4761         
4762 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4765
4766         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4767         method info, it is not used anymore.
4768
4769         * mini.h: Bump AOT file format version.
4770         
4771         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4772         word smaller.
4773
4774         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4775         change above.
4776         
4777         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4778
4779         * mini.h: Bump AOT file format version.
4780         
4781 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4784         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4785         iphone.
4786
4787         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4788         of CKFINITE and FBGE for VFP.
4789
4790 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4791
4792         * aot-compiler.c: Don't align code to 16 bytes on arm.
4793         
4794         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4795         before the methods they belong to.
4796
4797         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4798         the full-aot case if possible, since the trampoline will be called right 
4799         away.
4800
4801         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4802         trampolines to 1024 after the change above.
4803
4804         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4805         trampoline to save 8 bytes per trampoline.
4806
4807         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4808         change above.
4809
4810 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4813
4814 2009-06-08  Martin Baulig  <martin@ximian.com>
4815
4816         * debug-mini.c
4817         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4818         (_mono_debugger_throw_exception): Don't make this static.
4819         (_mono_debugger_unhandled_exception): Likewise.
4820         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4821
4822         * debug-mini.c
4823         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4824         (_mono_debugger_throw_exception): Add function prototype.
4825         (_mono_debugger_unhandled_exception): Likewise.
4826
4827         * mini-exceptions.c
4828         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4829         arg; return the first exception handler if the exception is caught
4830         and we're running inside the debugger.
4831         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4832         improve exception handle inside runtime-invoke, check whether the
4833         exception is actually caught in the method being invoked and not
4834         by the runtime-invoke-wrapper.
4835
4836 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4837
4838         * image-writer.c: Improve support for the osx assembler.
4839
4840         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4841         support them.
4842
4843 2009-06-08  Martin Baulig  <martin@ximian.com>
4844
4845         * debug-mini.c
4846         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4847         (_mono_debugger_throw_exception): Don't make this static.
4848         (_mono_debugger_unhandled_exception): Likewise.
4849         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4850
4851         * debug-mini.c
4852         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4853         (_mono_debugger_throw_exception): Add function prototype.
4854         (_mono_debugger_unhandled_exception): Likewise.
4855
4856         * mini-exceptions.c
4857         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4858         arg; return the first exception handler if the exception is caught
4859         and we're running inside the debugger.
4860         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4861         improve exception handle inside runtime-invoke, check whether the
4862         exception is actually caught in the method being invoked and not
4863         by the runtime-invoke-wrapper.
4864
4865 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4866
4867         * image-writer.c (append_subsection): Don't align subsections of the
4868         debug_line section as a workaround.
4869
4870         * dwarfwriter.c: Emit line number info in the AOT case as well.
4871
4872 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4873
4874         This patch is contributed under the terms of the MIT/X11 license
4875
4876        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4877        code_len <= code_size
4878
4879 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4882
4883 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4886         invoke wrappers, we now use trampolines instead.
4887
4888 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4889
4890         * mini-darwin.c: The exception thread must not be registered with
4891         the GC.
4892
4893 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4894
4895         * mini-gc.c: Disable the code because it makes SGen crash.
4896
4897 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4898
4899         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4900         instead of asserting.
4901
4902 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4903
4904         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4905         output file after the code has been compiled.
4906
4907 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4908
4909         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4910
4911 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4914         entries distinction to simplify the code.
4915
4916         * mini.h: Bump AOT file format version.
4917         
4918 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4919
4920         * objects.cs: Fix the signature of one of the tests.
4921
4922         * mini.c (mini_create_ftnptr): New helper function, moved here from
4923         object.c.
4924         (mini_get_addr_from_ftnptr): Ditto.
4925         (mini_init): Install the new helpers.
4926
4927 2009-05-28  Martin Baulig  <martin@ximian.com>
4928
4929         Correctly initialize the debugger when embedding Mono.
4930
4931         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4932         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4933         see documentation in mini_debug_running_inside_mdb().
4934
4935         * debug-debugger.c
4936         (mini_debug_running_inside_mdb): New function to check whether
4937         we're running inside mdb.
4938
4939         * mini.c (mini_init): Call mini_debugger_init() if we're running
4940         inside the debugger.
4941
4942         * driver.c (mono_main): Moved the call to mini_debugger_init()
4943         into mini_init() to make this work when embedding Mono.
4944
4945         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4946         calls to mini_debugger_init().
4947
4948         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4949         mono_debugger_main() -> mini_debugger_main() and put them inside a
4950         `MONO_DEBUGGER_SUPPORTED' conditional.
4951
4952 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4953
4954         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4955         this is no longer in use.
4956         * mini.h: Same.
4957
4958 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4959
4960         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4961
4962         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4963         methods.
4964
4965 2009-05-27  Martin Baulig  <martin@ximian.com>
4966
4967 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4970         long_conv_to_r_un to 64 bits.
4971
4972         * cpu-x86.md: Increase the instruction size due to the changes.
4973
4974         * iltests.il.in: Add regression test.
4975
4976         Fixes #467201.
4977
4978 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4979
4980         * objects.cs: Move the previous test from basic.cs to here.
4981
4982 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4983
4984         * basic.cs: Add regression test for #506915.
4985
4986 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4989         optimization we must check the bb of the first byte of stobj as
4990         it's the only one set in cil_offset_to_bb.
4991
4992         Fixes #506915.  
4993
4994 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * image-writer.c: Fix pointer directive on ppc64.
4997
4998 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * image-writer.c (asm_writer_emit_section_change): Avoid using
5001         .bss subsections on ppc too.
5002
5003 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * image-writer.c: Fix the definition of TARGET_ASM_....
5006         
5007         * image-writer.c: Fix the emission of assembler directives in the last
5008         change.
5009
5010         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5011         exception throwing code to accomodate ppc64.
5012
5013         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5014         size to work on ppc64 too.
5015
5016         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5017         too.
5018
5019         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5020         the assembler dialect instead of using platform specific defines.
5021
5022 2009-05-22  Geoff Norton  <gnorton@novell.com>
5023
5024         * mini-arm.c (get_call_info): If a structure is split between the stack
5025         and argument registers, we should not advance the stack pointer by the entire
5026         native size, but just by the amount that spilled.
5027
5028 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5031         correctly.
5032
5033 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5036         wrappers normally.
5037         
5038         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5039         methods so wrapper don't get added twice.
5040         (add_generic_instances): Don't add methods of arrays.
5041
5042         * generics.cs: Mark one test as !FULLAOT.
5043
5044 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         * mini-x86.c (emit_move_return_value): Remove unused vars.
5047
5048 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5049
5050         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5051         decomposing 8 bytes structs into a LCALL.
5052
5053         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5054         pointer for where to store the returned regs.
5055
5056         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5057         state the concern.
5058
5059         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5060
5061 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5062
5063         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5064         without getenv.
5065
5066 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5067
5068         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5069
5070         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5071         generics.
5072
5073 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5074
5075         * local-propagation.c (mono_local_cprop): Avoid local propagation
5076         across paired add/sub if the first instruction dest reg is it's
5077         source reg. For example:
5078
5079         int_add_imm R12 <- R12 [1] clobbers: 1
5080         int_sub_imm R42 <- R12 [1] clobbers: 1
5081
5082         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5083         maintain the math identify.
5084
5085         Fixes #505375.
5086
5087 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5088
5089         * Makefile.am: avoid going on the network just to get the revision,
5090         use git log instead
5091
5092 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5093
5094         Fixed estimate for short branches on amd64 (they were off mark, and
5095         enabling call prolog-epilog instrumentations caused assertions).
5096         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5097         estimate for the maximum length of this basic block.
5098         * mini-amd64.c:
5099         - mono_arch_emit_prolog: compute max_length for each basic block
5100           (instead of max_offset), and inflate size estimate also for entry bb
5101           in case of code instrumentation.
5102         - mono_arch_output_basic_block: get rid of "cpos" (the current
5103           estimated "position" in the code), and always use "offset" instead,
5104           which is accurate; at the beginning of the function quickly recompute
5105           max_offset for all the remaining blocks, starting from the current
5106           cfg->code_len (which is correct, and not estimated) and using the
5107           estimated block lengths computed previously.
5108
5109 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5110
5111         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5112         functions, it is already done in the caller.
5113
5114         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5115
5116         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5117         MONO_ARCH_GSHARED_SUPPORTED define.
5118
5119         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5120
5121         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5122         function.
5123
5124 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5127         call to mono_marshal_get_rgctx_invoke ().
5128
5129         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5130         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5131         gshared use the static rgctx trampolines now.
5132         
5133         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5134         platform supports it.
5135
5136 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5139
5140         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5141
5142 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5143
5144         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5145
5146         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5147         for ppc.
5148
5149 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5150
5151         Made it possible for mono_arch_instrument_epilog to preserve
5152         argument registers, otherwise instrumenting the "epilogue" before
5153         a tail call would clobber them.
5154         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5155         if like mono_arch_instrument_epilog but with an additional parameter
5156         that states if argument registers must be preserved.
5157         * mini.c: implemented mono_arch_instrument_epilog as a call to
5158         mono_arch_instrument_epilog_full without asking to preserve argument
5159         registers (this makes the existing code work as usual).
5160         * mini-amd64.c:
5161         - mono_arch_instrument_epilog: add parameter to transform it into
5162         mono_arch_instrument_epilog_full, and preserve argument registers
5163         when required.
5164         - mono_arch_output_basic_block, OP_TAILCALL case: call
5165         mono_arch_instrument_epilog_full.
5166         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5167         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5168         only transformed mono_arch_instrument_epilog into
5169         mono_arch_instrument_epilog_full.
5170
5171 2009-05-15  Geoff Norton  <gnorton@novell.com>
5172
5173         * mini-darwin.c: This works on arm now.
5174
5175 2009-05-14  Geoff Norton  <gnorton@novell.com>
5176
5177         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5178         embedding api.
5179
5180 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5181
5182         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5183         label names.
5184
5185         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5186         wrappers during full aot mode correctly.
5187
5188         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5189         methods correctly.
5190
5191         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5192         mono_metadata_type_hash ().
5193
5194 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5195
5196         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5197         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5198         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5199         Removed MONO_INST_BRLABEL from the instruction flags, and the
5200         remaining code that used it, because we do not support branches inside
5201         basic blocks (and branch target labels) anymore.
5202         * Makefile.am: As part of the above cleanup, remove reference to
5203         BURG files which don't exist anymore.
5204
5205 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5208         osx.
5209
5210         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5211         to use mono_arch_throw_corlib_exception.
5212
5213         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5214         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5215
5216         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5217         domain mempool.
5218
5219         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5220
5221         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5222         for the got to make debugging easier and to avoid confusing it with the
5223         system got.
5224         
5225         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5226         method so a breakpoint can be set when using gdb.
5227
5228 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5229
5230         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5231         on mono_method_get_imt_slot ().
5232
5233         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5234         num_decodes variables.
5235
5236         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5237         change as it doesn't seem to work.
5238         
5239         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5240         wrappers.
5241
5242 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5245         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5246
5247         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5248         builder when using full aot.
5249
5250         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5251         here, it is already handled.
5252         
5253         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5254         correctly for IMT.
5255
5256         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5257
5258         * mini-arm.h: Enable IMT for full aot.
5259         
5260         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5261         arch doesn't support it.
5262
5263         * mini.c (mini_init): Don't disable IMT for full aot if the
5264         architecture supports it.
5265
5266         * mini.h (MonoAotTrampoline): New enum containing the different types
5267         of 'numerous' trampolines.
5268         (MONO_AOT_FILE_VERSION): Bump this.
5269
5270         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5271         static rgctx trampolines. Add support for full-aot IMT thunks.
5272
5273         * mini-amd64.h: Enable IMT for full aot.
5274
5275         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5276         to exclude tests belonging to a category.
5277
5278         * generics.cs: Mark some tests with a !FULLAOT category.
5279
5280         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5281         generics tests.
5282
5283 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5284
5285         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5286         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5287         (emit_plt): Fix a warning.
5288
5289 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5292         back into aot-compiler.c to a place where the other functions shared by
5293         the runtime and aot compiler are.
5294         
5295         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5296         as done previously, instead of in MonoAotFileInfo, since pointers might have
5297         alignment requirements.
5298
5299         * mini.h: Bump AOT file format version.
5300
5301 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5302
5303         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5304         that is used at runtime from the aot-compiler.c, this makes it
5305         work on setups that remove the AOT compiler from the output
5306         image. 
5307
5308 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5311         PPC.
5312
5313         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5314
5315         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5316
5317         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5318         stuff to mono_arch_decompose_long_opts ().
5319         (mono_decompose_opcode): Remove some dead code.
5320
5321 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5322
5323         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5324         cmethod can be null for quite a some reasons.
5325
5326 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5327
5328         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5329
5330 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5333
5334 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5335
5336         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5337         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5338         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5339         calls returning structures by addr on amd64.
5340
5341         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5342
5343         * iltests.il.in: Restructure the tail call tests a bit.
5344         
5345 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5346
5347         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5348         for virtual methods too.
5349
5350 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5351
5352         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5353         due to regression in verifying System.dll.
5354
5355 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5358         in dynamic methods.
5359
5360         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5361         instances.
5362
5363         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5364         g_str_hash () which can change.
5365
5366         * driver.c (mini_regression): Disable optimizations not supported by
5367         the cpu. Fixes #500019.
5368
5369         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5370         build.
5371
5372 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5375         to the latest LLVM code.
5376
5377 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5380
5381 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5384         x86/amd64.
5385
5386         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5387         no longer saving offsets, so just save the patch types along with the other
5388         info.
5389         * aot-runtime.c (load_patch_info): Update after the changes to 
5390         encode_patch_list ().
5391         (decode_got_entry): Removed, merged into load_patch_info ().
5392         (is_shared_got_patch): Removed, call the same function from
5393         aot-compiler.c.
5394
5395         * mini.h: Bump aot file format version.
5396         
5397         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5398         half-finished no-dlsym code.
5399
5400         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5401         option.
5402
5403         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5404         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5405
5406 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5409         buffer length to work with AOT code.
5410
5411         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5412         ldfld/stfld opcodes.
5413
5414         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5415         as it is not used.
5416
5417         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5418
5419         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5420
5421         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5422         LLVM API.
5423
5424         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5425         if needed. Don't decompose long operations when using llvm.
5426
5427 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5428
5429         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5430         PAGESIZE constant.
5431
5432         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5433
5434 2009-05-03  Martin Baulig  <martin@ximian.com>
5435
5436         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5437         mono_debugger_insert_method_breakpoint() since the class init
5438         handler we're inserting at the top of the method already gives us
5439         a notification.
5440
5441 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5444         to mono_arch_decompose_long_opts () for x86 and arm.
5445
5446 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5447
5448         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5449         TARGET_AMD64 here.
5450
5451 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5454         JIT code.
5455
5456 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5459         number of trampolines used in full-aot mode.
5460
5461         * aot-compiler.c: Add an ntrampolines option to set the number of 
5462         trampolines emitted in full-aot mode.
5463
5464 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5467         a volatile load. Get rid of get_tempname (), llvm assigns names
5468         automatically.
5469
5470         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5471         builder function.
5472
5473         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5474         a value.
5475
5476         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5477         level 1.
5478
5479         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5480         to the same register as a fixed sreg2. Fixes #497271.
5481
5482         * iltests.il.in: Add a new test.
5483
5484 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5485
5486         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5487         stack, since pushes complicate exception handling.
5488
5489         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5490         the stack if they are passed using moves.
5491
5492         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5493
5494         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5495         when using llvm.
5496
5497         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5498         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5499         of FMOVE if it is an R4.
5500
5501 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5502
5503         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5504
5505         * mini.h (LLVMCallInfo): New structure to store calling convention 
5506         information for the LLVM back end similar to the CallInfo structures in 
5507         the back-ends.
5508
5509         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5510         call information in a format usable by LLVM.
5511         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5512
5513         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5514         mono_llvm_emit_call () when compiling using LLVM.
5515
5516         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5517         comments to all functions. Fix memory leaks. Add a public init/cleanup
5518         function.
5519
5520         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5521
5522         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5523         mono_array_new_va () jit icall.
5524         
5525 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5526
5527         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5528         multiple machine description files to be specified.
5529         * mini-ops.h: fixes for cross-compilation.
5530
5531 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5532
5533         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5534         some porting work.
5535
5536 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5537
5538         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5539         to prevent asserts in various passes. Fixes #497220.
5540
5541 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5542
5543         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5544         a racy assert.
5545
5546         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5547         table to avoid duplicates.
5548
5549         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5550         
5551         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5552         option is used.
5553
5554 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5555
5556         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5557         is for method or field access.
5558
5559 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5562         a Value to stdout.
5563
5564         * mini-llvm.c (mono_llvm_emit_method): Use it.
5565         
5566         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5567         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5568         on volatile values.
5569
5570         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5571         synchronized methods.
5572
5573         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5574
5575         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5576
5577         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5578         OP_LOADI8_MEM.
5579
5580         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5581         allowing some options to be set dynamically.
5582
5583 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5586         unconditional branch.
5587
5588         * mini.h (MonoTrampolineType): Add new trampoline type 
5589         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5590         compiled code.
5591
5592         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5593         function.
5594
5595         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5596         creation function.
5597
5598         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5599         is enabled. Instead, use the llvm vcall trampoline.
5600         
5601         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5602
5603         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5604         
5605         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5606         functions.
5607
5608         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5609         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5610
5611         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5612         OP_IA64_CSET opcode.
5613
5614         * mini.c: Fix a warning.
5615
5616         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5617         THROW to the appropriate llvm type.
5618
5619 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * mini.c (mini_method_compile): Add statistics for methods JITted
5622         with/without LLVM.
5623
5624 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5627         OP_IA64_CMP_<cond>_IMM opcodes.
5628
5629 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5632         corlib exceptions.
5633
5634         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5635         correctly.
5636
5637         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5638         GENERICINST.
5639
5640 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5641
5642         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5643
5644 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5647         support.
5648
5649         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5650         rgctx invoke trampolines for x86.
5651
5652         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5653         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5654         (mono_arch_get_vcall_slot): Simplify this.
5655
5656 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5657
5658         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5659         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5660
5661 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5662
5663         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5664         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5665
5666         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5667
5668         * liveness.c (visit_bb): Remove a needless assert.
5669
5670 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5671
5672         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5673         full aot support to the arch specific code.
5674
5675         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5676
5677         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5678
5679         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5680         
5681         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5682         collect information about the delegate invoke impl trampolines.
5683
5684         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5685         to save trampolines during full-aot mode.
5686
5687         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5688         creation function which returns a trampoline which sets the rgctx
5689         argument.
5690         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5691         wrapper if possible.
5692         (mono_delegate_trampoline): Ditto.
5693
5694         * mini.c (mono_jit_runtime_invoke): Ditto.
5695
5696         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5697         
5698         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5699
5700         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5701         
5702 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5705         just setting the opcode to OP_NOP.
5706
5707 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * mini.c (mini_method_compile): Put the last change inside an 
5710         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5711         
5712         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5713         and extend live ranges to cover the whole method when using xdb.
5714
5715         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5716         do it in the trampolines.
5717
5718         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5719         needed.
5720
5721         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5722         
5723         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5724         call code in full-aot mode since IMT is disabled there.
5725         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5726         new JIT no longer has that restriction.
5727
5728         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5729
5730         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5731         a more compact format.
5732         (mono_aot_wrapper_name): New function to return a unique name for a
5733         wrapper method, also used by the AOT runtime.
5734
5735         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5736         aot-compiler.c.
5737
5738         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5739         when a ICollection<T> etc is encountered.
5740         (add_generic_instances): Process method arguments/locals too.
5741         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5742         trampoline names.
5743
5744         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5745         
5746 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5749
5750         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5751
5752         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5753         representing the result of the decomposition. Nullify instructions
5754         instead of setting them to OP_NOP since nops can't have registers
5755         set.
5756
5757 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5758
5759         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5760         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5761         info. Strip 'mapping symbols' on ARM.
5762
5763         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5764         
5765         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5766         this with the native genmdesc.
5767
5768 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5769
5770         * aot-runtime.c:  Fixing the MSVC build.
5771
5772         Code is contributed under MIT/X11 license.
5773
5774 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5777         JITted code depends on it.
5778
5779 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5780
5781         * aot-compiler.c: Use new MonoGenericParam accessors.
5782
5783 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5784
5785         Reduce memory usage and improve correctness wrt MonoGenericParam
5786         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5787         handing.  Avoid allocating MonoGenericParams, but use the ones in
5788         the container itself.
5789
5790 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5791
5792         * tasklets.c: Return exceptions in the out argument.
5793
5794 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5797         opcode. Use pointer types in more places instead of casting them to 
5798         integers.
5799
5800         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5801         optimizations.
5802         (mono_llvm_optimize_method): New helper function to optimize a method.
5803
5804         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5805         widening code so it could be called from more places.
5806         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5807         code paths in the call opcodes.
5808
5809 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5810
5811         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5812
5813 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5814
5815         * dwarfwriter.c: Use _ to separate class name 
5816         components as gdb can't handle '.'. Represent reference variables
5817         as 'class <NAME>&'.
5818         
5819         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5820
5821         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5822         
5823         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5824
5825         * gc-test.cs: New file with GC stack marking tests.
5826         
5827         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5828         negative numbers for vfp.
5829
5830         * basic-float.cs: Add a test.
5831         
5832 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5833
5834         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5835
5836 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5837
5838         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5839         part of tasklet/continuation support.
5840
5841 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5842
5843         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5844         amd64 opcodes inside an ifdef.
5845
5846         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5847         of complex types.
5848         
5849         * dwarfwriter.c (emit_type): Emit the class info for classes.
5850
5851 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5854
5855         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5856
5857         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5858
5859         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5860
5861 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5862
5863         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5864
5865         * mini-llvm.c: Update comments.
5866
5867         * mini.h (COMPILE_LLVM): New macro.
5868
5869         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5870
5871         * ssa.c (mono_ssa_compute): Ditto.
5872         
5873         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5874         the unwind ops from a DWARF FDE.
5875
5876         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5877         methods by extracting the dwarf unwind ops from the unwind info generated
5878         by LLVM.
5879         
5880         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5881         calls.
5882
5883         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5884         addressing modes.
5885
5886 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * Makefile.am (llvm_sources): Enable this.
5889
5890         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5891         failing back to the JIT if something cannot be handled.
5892
5893         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5894         compiling with LLVM.
5895
5896         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5897         compiling with LLVM.
5898
5899         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5900         compiling with LLVM.
5901
5902         * mini-ops.h: Add a few opcodes needed by LLVM.
5903
5904         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5905         has no unwind info.
5906
5907         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5908         backend.
5909
5910         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5911
5912         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5913
5914 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5915
5916         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5917         ridiculously large methods.
5918
5919 2009-03-31  Martin Baulig  <martin@ximian.com>
5920
5921         * debug-debugger.c (debugger_remove_breakpoint): Call
5922         mono_debugger_remove_class_init_callback ().
5923
5924 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5927         right before emitting code, not at the start.
5928
5929         * mini.c (mono_postprocess_patches): Extract this into a separate function
5930         from mono_codegen ().
5931
5932         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5933         byref types correctly.
5934
5935 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5938         by the last change.
5939
5940 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5943         indirect calls, this avoids problems where get_vcall_slot () would get
5944         confused by the native code for the instruction preceeding the call.
5945         (mono_arch_get_vcall_slot): Simplify this.
5946         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5947
5948         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5949         register allocator now seems to depend on them instead of the data in
5950         cpu-<ARCH>.md.
5951
5952         * mini.c (mini_method_compile): Throw the correct type of exception if
5953         mono_method_get_header () fails because of a loading error.
5954
5955 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * mini.c (mini_method_compile): Clear the loader error if the method
5958         header cannot be decoded.
5959
5960         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5961         interface methods on proxies correctly.
5962
5963         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5964         this argument for vtype methods. Add precise liveness info for arguments.
5965
5966         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5967         LIVERANGE_START/END opcodes.
5968
5969         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5970         for arguments and values in registers.
5971
5972 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5975         return a valuetype. Fixes #487518.
5976
5977         * iltests.il: Add a test.
5978         
5979         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5980
5981         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5982         closed over a null reference correctly.
5983
5984 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5987
5988 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5989
5990         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5991         allocated to the same registers as fixed sregs.
5992
5993 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5994
5995         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5996         ATOMIC_CAS_IMM ops.
5997
5998         * method-to-ir.c: Handle more cases for
5999         Interlocked.CompareExchange.
6000
6001         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
6002         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6003         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6004
6005 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * aot-runtime.c (decode_method_ref): Fix a warning.
6008
6009         * unwind.c (mono_unwind_frame): Ditto.  
6010
6011 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6012
6013         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6014         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6015
6016         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6017         fix the handling of large values in the ALU_PC_G0_NC relocation.
6018
6019 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6022
6023 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6024
6025         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6026         ops.
6027
6028 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6029
6030         * method-to-ir.c: MINI_OP3 needs a comma.
6031
6032         * method-to-ir.c, mini.h, mini.c: Remove
6033         mono_init_op_sreg_counts ().
6034
6035 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6038         OP_JMP.
6039         
6040         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6041         assertion.
6042
6043         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6044
6045         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6046         code somewhat.
6047
6048 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6049
6050         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6051         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6052         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6053         operations.
6054
6055 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6056
6057         * driver.c: Change location of gc_wrapper.h.
6058
6059         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6060         inside finally clauses correctly. Fixes #485721.
6061
6062         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6063         after the change above.
6064
6065         * exceptions.cs: Add a test.
6066         
6067 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6070
6071         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6072         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6073         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6074
6075         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6076         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6077
6078 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6079
6080         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6081         Simplify logic for ensure_method_is_allowed_to_call_method. 
6082         Handle wrappers on callers.
6083
6084 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6087         them don't run yet.
6088
6089         * basic-simd.cs: Fix the names of some test methods.
6090
6091 2009-03-18  Geoff Norton  <gnorton@novell.com>
6092
6093         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6094
6095 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6096
6097         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6098
6099 2009-03-17  Jb Evain  <jbevain@novell.com>
6100
6101         * driver.c: remove now uneeded call to mono_gc_base_init before
6102         mono_profiler_load.
6103
6104 2009-03-17  Jb Evain  <jbevain@novell.com>
6105
6106         * dwarfwriter.c (token_handler): handle more cases.
6107
6108 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6109
6110         * method-to-ir.c: Remove more dead code (that was required only
6111         because of method_is_safe). Fix compiler warnings.
6112
6113 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6114
6115         * method-to-ir.c: Remove unneeded/useless method_is_safe
6116         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6117
6118 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6119
6120         * mini.c (mini_method_compile): Print the method been compiled with
6121         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6122         for people not familiar with the runtime.
6123
6124 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6127         a managed object which is later put into a GList. Return its class instead.
6128
6129         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6130         stack slots when using sgen.
6131
6132 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6133
6134         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6135
6136 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6139         > so it works on the first vreg as well.
6140
6141 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6144         trigger randomly.
6145
6146         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6147         
6148         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6149         implement GArray.
6150
6151 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6152
6153         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6154         native->IL offset mapping.
6155
6156 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6157
6158         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6159
6160         * basic.cs: Add a test.
6161
6162 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6163
6164         * mini-x86.c (mono_arch_output_basic_block): Use different
6165         registers in case the ones we want to overwrite are used by the
6166         other operand.  Fixes regression in #480807.
6167
6168 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6171
6172         * dwarfwriter.c (emit_line_number_info): The line number info for
6173         IL code was off by one. Fix that.
6174
6175         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6176         stack.
6177
6178 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6179
6180         Contributed under the terms of the MIT/X11 license by Steven
6181         Munroe <munroesj@us.ibm.com>.
6182
6183         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6184         Fixes #483462.
6185
6186 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6189         as well.
6190
6191 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6192
6193         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6194         the delegate ctor handling code. Fixes #482638.
6195         
6196         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6197         #481458.
6198
6199         * iltests.il.in: Add a test.
6200         
6201         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6202         mini-posix.c.
6203
6204 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6205
6206         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6207         is shared generic code, return the trampoline, even if the method
6208         has already been compiled.  Fixes #479763.
6209
6210         * mini.c, mini.h: New function
6211         mono_jit_find_compiled_method_with_jit_info() which is the same as
6212         mono_jit_find_compiled_method() but also returns the jit info.
6213
6214 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6215
6216         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6217         for methods which actually have one.  For all other methods, make
6218         sure the this argument var is live the whole method.
6219
6220         * mini.c (mini_method_compile): Every shared method has a
6221         this/vtable/mrgctx info.  Fixes #480807.
6222
6223 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6224
6225         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6226         generic/imt thunks where some entries branch through the vtable,
6227         while other entries branch directly.
6228
6229 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6230
6231         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6232
6233         * mini-windows.c: Ditto.
6234         
6235         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6236         ctors.
6237
6238 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6239
6240         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6241         down an assert.
6242
6243 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6244
6245         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6246         #481403.
6247
6248 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6249
6250         * exceptions-x86.c: Include debug-mini.h - fixes build.
6251
6252 2009-03-04  Martin Baulig  <martin@ximian.com>
6253
6254         * debug-mini.c: Clean up the exception API and add documentation.
6255         (mono_debugger_handle_exception): New public method; this is
6256         called when throwing an exception or encountering an unhandled one.
6257         (mono_debugger_call_exception_handler): Formerly known as
6258         mono_debugger_handle_exception(); this is used to tell the
6259         debugger that we're about to invoke an exception handler.
6260
6261 2009-03-04  Martin Baulig  <martin@ximian.com>
6262
6263         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6264         ../metadata/mono-debug-debugger.c; save and reset exception state.
6265
6266 2009-03-02  Martin Baulig  <martin@ximian.com>
6267
6268         * debug-mini.c: Moved the debugger exception handling here from
6269         ../metadata/mono-debug-debugger.c.
6270
6271         * debug-mini.h
6272         (MonoDebuggerExceptionAction): New exception typedef.
6273
6274         * debug-mini.c
6275         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6276
6277         * exceptions-amd64.c
6278         (mono_amd64_throw_exception): Use the new debugger exception
6279         handling code.
6280
6281         * mini-exceptions.c
6282         (mono_handle_exception_internal): Don't call
6283         mono_debugger_unhandled_exception() here.
6284
6285 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6286
6287         * mini.c aot-compiler.c: Update after the changes to 
6288         mono_marshal_get_runtime_invoke ().
6289
6290         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6291         Virtual generic methods might not have method->slot set, work around
6292         that.
6293
6294         * generics.cs: Add a test.
6295
6296 2009-03-02  Geoff Norton  <gnorton@novell.com>
6297
6298         * mini.c:
6299         * driver.c: Allow signal chaining of SIGFPE as well.
6300
6301 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6304         this since it now receives the method not its generic context in the
6305         IMT reg.
6306
6307         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6308         generic/imt thunks where some entries branch through the vtable, while
6309         other entries branch directly.
6310
6311         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6312
6313         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6314         support for interface methods as well.
6315
6316         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6317         using the normal IMT thunks.
6318
6319         generics.cs: Add new tests.
6320         
6321         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6322         the generic inst to the generic imt thunks. This fixes AOT support, 
6323         improves consistency with the normal IMT thunks, and makes it easier to
6324         add support for interface generic virtual methods later.
6325
6326         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6327         
6328 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6329
6330         * driver.c (mono_set_signal_chaining): New public API function to enable
6331         signal chaining on POSIX platforms.
6332
6333         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6334         (si@lindenlab.com) to implement signal chaining. The original patch was
6335         contributed under the MIT X/11 license:
6336         https://bugzilla.novell.com/show_bug.cgi?id=318894
6337
6338 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6339
6340         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6341         too until it can be made to run on amd64.
6342
6343 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6344
6345         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6346         to  get_generic_context_from_code () + get_call_info () if possible.
6347
6348 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6351         suspend-on-sigsegv functionality.
6352
6353         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6354         to suspend when a native SIGSEGV is received. This is useful for debugging
6355         crashes which don't happen under gdb, since a live process contains more
6356         information than a core file.
6357
6358         * mini-exceptions.c (mono_print_thread_dump): Use 
6359         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6360
6361         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6362
6363         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6364         
6365         * basic-float.cs: Disable the tests which currently fail on amd64.
6366
6367         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6368         value to mono_arch_patch_callsite () to fix crashes.
6369         
6370         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6371
6372 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6373
6374         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6375         nop code by patching the call address to point to the nullified class init
6376         trampoline, as the former does not seem to be safe on SMP machines.
6377
6378 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6379
6380         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6381         they were wrong.
6382
6383 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * basic-float.cs basic-calls.cs: Fix warnings.
6386
6387 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6388
6389         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6390         correct frame pointer in the LMF.  Should fix #478394.
6391
6392 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6393
6394         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6395
6396         * image-writer.c: Make the binary writer less verbose.
6397
6398 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6399
6400         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6401         are called from runtime invoke wrappers.
6402
6403 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6404
6405         * cpu-ppc.md (store_memindex): Increase the size of this.
6406
6407 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6410
6411         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6412
6413         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6414         OP_LCONV_TO_R_UN.
6415
6416         Last fix for of #467201.
6417
6418
6419 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6420
6421         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6422
6423         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6424         and long_conv_to_r8_2:
6425
6426         Fixed part of #467201.
6427
6428 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6429
6430         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6431
6432         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6433         conversion to 32 bits.
6434
6435         * cpu-x86.md: Increase the size of int_conv_to_r4.
6436
6437         * basic-float.cs: Add a test for this.
6438
6439         Fixed part of #467201.
6440
6441 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6442
6443         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6444
6445         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6446         conversion to 64 bits.
6447
6448         * basic-float.cs: Add a test for this.
6449
6450         Fixed part of #467201.
6451
6452 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6453
6454         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6455
6456         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6457         This behavior is compatible with MS.
6458
6459         * iltest.il.in: Add a test for this.
6460
6461         Fixed part of #467201.
6462
6463 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6464
6465         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6466
6467         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6468         change the precision of the value.
6469
6470         * cpu-x86.md: Define len for float_conv_to_r4.
6471
6472         * basic-float.cs: Add a test for this.
6473
6474         Fixed part of #467201.
6475
6476 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * mini.c: Adjust locking order to the new semantics where the loader lock
6479         comes first.
6480
6481 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6482
6483         * aot-runtime.c:
6484         * mini-amd64.c:
6485         * mini-arm.c:
6486         * mini-ia64.c:
6487         * mini-mips.c:
6488         * mini-ppc.c:
6489         * mini-sparc.c:
6490         * mini-trampolines.c:
6491         * mini-x86.c:
6492         * mini.c:
6493         * tramp-alpha.c:
6494         * tramp-amd64.c:
6495         * tramp-arm.c:
6496         * tramp-hppa.c:
6497         * tramp-ia64.c:
6498         * tramp-mips.c:
6499         * tramp-ppc.c:
6500         * tramp-s390.c:
6501         * tramp-s390x.c:
6502         * tramp-sparc.c:
6503         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6504
6505 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6508         as it is incorrect.
6509
6510 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6513         for cctors if needed.
6514
6515 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6516
6517         * mini-ppc.c: Fix build on Darwin.
6518
6519 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6520
6521         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6522         version instead of 3 as valgrind doesn't like version 3.
6523
6524         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6525
6526         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6527         usable for hashing methods.
6528         (emit_extra_methods): Use the new hash to avoid putting every method in the
6529         same hash bucket.
6530
6531         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6532
6533         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6534         whenever a method ref could match a method.
6535         
6536         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6537         test to fail.
6538         
6539         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6540         methods refs.
6541
6542         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6543
6544         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6545         the encoding buffer.
6546
6547         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6548         mono_method_get_header () on inflated methods as an optimization.
6549
6550 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6551
6552         * ssa.c (fold_ins): Fix another crash if the instruction following the
6553         switch was optimized away.
6554
6555 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6556
6557         Contributed under the terms of the MIT/X11 license by Steven
6558         Munroe <munroesj@us.ibm.com>.
6559
6560         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6561
6562 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6563
6564         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6565         around the mono_domain_alloc calls, it is now done by the functions
6566         themselves.
6567
6568         * aot-compiler.c (compile_method): Only add wrappers referenced by
6569         the method if compiling with full AOT.
6570         (mono_compile_assembly): Error out if --aot=full is specified on
6571         a platform where it is not supported.
6572
6573         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6574         on ARM too.
6575
6576         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6577         AOT support.
6578
6579         * aot-runtime.c (load_named_code): Handle 
6580         mono_arm_throw_exception_by_token.
6581
6582         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6583
6584         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6585         unaligned.
6586
6587         * Makefile.am (fullaotcheck): Exit if a test fails.
6588
6589         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6590         on ARM.
6591         (mono_compile_assembly): Handle the assembler failing.
6592
6593         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6594         accepting subsections of .bss.
6595
6596         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6597         was optimized away.
6598
6599         * aot-compiler.c: Remove some unused includes.
6600         
6601         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6602         now in MonoImageWriter.
6603
6604         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6605         code sequence which matches a non-virtual call. Fixes #472654.
6606
6607 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6608
6609         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6610         xdebug code.
6611         
6612         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6613         use the image/dwarf writers directly.
6614
6615         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6616         field.
6617
6618         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6619         MonoDwarfWriter.
6620
6621         * image-writer.h: Fix some typos.
6622
6623         * dwarfwriter.h dwarfwriter.c: New files.
6624         
6625         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6626         separate module.
6627
6628         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6629         argument to return unwind info.
6630
6631         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6632
6633         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6634         
6635         * aot-runtime.c (decode_method_ref): Add a case for 
6636         MONO_AOT_METHODREF_WRAPPER_NAME.
6637
6638         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6639         for AOT.
6640
6641         * aot-compiler.c (encode_method_ref): Use the new constants.
6642
6643         * aot-runtime.c (decode_method_ref): Ditto.
6644
6645         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6646         be compiled, not the icall itself.
6647
6648 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6649
6650         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6651         using decode_method_ref ().
6652
6653         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6654         convert it to an in32. Fixes #475859.
6655
6656         * arrays.cs: Add a test.
6657
6658 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6659
6660         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6661         OP_LCONV_TO_U2.
6662
6663         * basic-long.cs: Add a test.
6664
6665 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6666
6667         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6668         remove the frame pointer in leaf methods which don't receive any
6669         arguments, don't throw exceptions and don't do dynamic stack
6670         allocations.
6671
6672 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6673
6674         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6675         the fail_tramp changes. Hopefully fixes #475132.
6676
6677 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6678
6679         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6680         instead of mono_metadata_signature_dup_full.
6681
6682 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6683
6684         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6685         for processing jump tables. Fixes #473787.
6686
6687 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6688
6689         * mini-generic-sharing.c: mini_method_get_context() just calls
6690         mono_method_get_context_general() now.
6691
6692         * mini.c, mini.h: Moved get_object_generic_inst(),
6693         construct_object_context_for_method() and
6694         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6695
6696 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6697
6698         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6699         basic block fell through to its successor bblock without a branch. Fixes
6700         #474718.
6701
6702         * iltests.il.in: Add a test.
6703         
6704         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6705         (can_encode_patch): We can now handle arrays of generic parameters and
6706         array methods.
6707
6708         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6709
6710         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6711         the AOT file to avoid some #ifdefs in aot-runtime.c
6712
6713         * mini.h: Bump AOT file format version.
6714
6715 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6716
6717         * Makefile.am (fullaotcheck): Make this run the tests.
6718
6719         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6720
6721 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6722
6723         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6724         individually.  Fixes #473482.
6725
6726 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6727
6728         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6729
6730 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6731
6732         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6733         (mono_compile_assembly): Hush compile warnings about
6734         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6735         code path.
6736
6737 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6740
6741         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6742
6743         * aot-compiler.c: Fix arm support.
6744
6745         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6746         img_writer_emit_unset_mode () function.
6747
6748         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6749         (mono_unwind_get_dwarf_pc_reg): Ditto.
6750
6751         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6752         Move almost all platform specific code to a set of arch_ functions, 
6753         and document them to ease porting.
6754         
6755         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6756
6757         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6758
6759         * aot-compiler.c: Extract the image writing functionality into a separate
6760         module to reduce the size of this file.
6761
6762 2009-02-09  Geoff Norton  <gnorton@novell.com>
6763
6764         * mini-s390.c: Fix the signature of emit_sig_cookie.
6765
6766 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6769
6770         * aot-runtime.c (is_shared_got_patch): Ditto.
6771
6772         * aot-runtime.c (load_named_code): Cope with the fact that 
6773         decode_got_entry () won't decode the patch fully if its corresponding got
6774         entry is already filled.
6775         
6776         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6777         Initialize *ji.
6778         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6779
6780         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6781         as the moving pointer instead of 'buf' for consistency with the rest of the
6782         codebase.
6783         (mono_arch_create_monitor_exit_trampoline): Ditto.
6784
6785         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6786         generic_class_init trampolines.
6787         (add_generic_class): Extract some code from add_generic_instances () into a
6788         separate function so it can be called from other places too.
6789         (compile_method): Call add_generic_class () for the classes of inflated methods
6790         referenced by the method.
6791         (can_encode_patch): Allow references to generic parameters.
6792
6793         * aot-runtime.c: Add support the patches required by the new trampolines.
6794         
6795         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6796         support.
6797
6798         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6799         full-aot support.
6800
6801         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6802         this from get_throw_pending_exception, make the signature full aot compatible.
6803
6804         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6805
6806         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6807
6808         * exceptions.cs: Add a test.
6809
6810 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6813         use the DWARF_DATA_ALIGN constant instead.
6814
6815         * exception-<ARCH>.c: Update after the above change.
6816
6817         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6818         dwarf unwinder.
6819
6820         * mini-arm.c: Enable the dwarf unwinder.
6821
6822         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6823         instead of mono_class_setup_vtable ().
6824
6825 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6826
6827         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6828         dwarf unwinder.
6829
6830         * mini-x86.h: Enable the dwarf unwinder.
6831
6832 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6833
6834         Fix mcs/tests/test-7.cs
6835         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6836         2009-02-03.
6837
6838 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * mini.c (print_jit_stats): Remove some unused statistics.
6841
6842 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6843
6844         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6845
6846 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6847
6848         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6849         the method we get from mono_object_get_virtual_method() because
6850         that function does it properly, now.
6851
6852 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6853
6854         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6855         opcodes. Fixes #472775.
6856
6857 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6858
6859         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6860         fact that mono_find_jit_info() sometimes returns the context
6861         corresponding to the jit info in new_ctx.  Fixes #472600.
6862
6863 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6866         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6867         klass->enum_basetype directly.
6868
6869         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6870         enum subtypes.
6871
6872         * unwind.c: Avoid 0 sized arrays.
6873
6874 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6875
6876         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6877         size on systems with 64k pages. Fixes #471389.
6878
6879 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6880
6881         Contributed under the terms of the MIT/X11 license by Steven
6882         Munroe <munroesj@us.ibm.com>.
6883
6884         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6885         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6886         necessary.
6887
6888 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6889
6890         Contributed under the terms of the MIT/X11 license by Steven
6891         Munroe <munroesj@us.ibm.com>.
6892
6893         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6894         comparison fix.
6895
6896         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6897         The trampoline can be longer on PPC64.
6898
6899 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6900
6901         Contributed under the terms of the MIT/X11 license by Steven
6902         Munroe <munroesj@us.ibm.com>.
6903
6904         * mini-ppc.c: Compiler warning fixes and trivial code
6905         simplifications.
6906
6907 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6908
6909         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6910         ins->dreg which could be a hardware register, not a vreg.
6911
6912         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6913         
6914         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6915         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6916
6917         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6918         
6919         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6920         ->dreg, that is not the vreg we are looking for.
6921
6922         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6923
6924         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6925         LIVERANGE_END.
6926
6927         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6928         strange crashes.
6929
6930 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6931
6932         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6933
6934         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6935         the line diff is 0.
6936
6937         * aot-compiler.c: Add xdebug support on x86.
6938
6939         * unwind.c: Add x86 support.
6940         
6941         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6942         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6943
6944         * mini.c (mini_method_compile): Ditto.
6945         
6946         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6947         the variable index.
6948
6949         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6950         which mimic .push_section/.pop_section in GAS.
6951         
6952         * aot-compiler.c: Emit precise live range information for variables.
6953
6954         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6955
6956         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6957         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6958         them.
6959
6960         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6961         the live ranges of variables.
6962
6963         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6964         of the variable in terms of native offsets.
6965
6966 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6967
6968         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6969         
6970 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6971
6972         Contributed under the terms of the MIT/X11 license by Steven
6973         Munroe <munroesj@us.ibm.com>.
6974
6975         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6976         order (offset then base reg) for ppc_load_multiple_regs.
6977         (emit_save_saved_regs) Correct operand order for
6978         ppc_store_multiple_regs.
6979         (mono_arch_get_call_filter): Correct operand order for
6980         ppc_load_multiple_regs.
6981
6982         * mini-ppc.c (emit_memcpy): Fix operand order for
6983         ppc_load_reg_update and ppc_store_reg_update.
6984         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6985         (mono_arch_emit_epilog): Correct operand order for
6986         ppc_load_multiple_regs.
6987
6988         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6989         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6990
6991 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6992
6993         * cpu-ppc64.md: Fixed storer4_memindex length.
6994
6995 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6996
6997         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6998         line number info.
6999         
7000         * aot-compiler.c (emit_line_number_info): Optimize this.
7001
7002 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7003
7004         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7005         
7006         * aot-compiler.c: Add debug info for methods without debug info by
7007         emitting an IL file and having the line number info referencing that file.
7008
7009         * aot-compiler.c: Optimize the size of the generated line number info.
7010
7011         * aot-compiler.c: Emit line number info in xdebug mode.
7012
7013         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7014         million arguments.
7015
7016 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7019
7020         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7021         is used.
7022
7023 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7024
7025         * basic-calls.cs: Test for the weird crash found on arm.
7026         
7027 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7028
7029         * cpu-arm.md: Increase the size of storer8_membase_reg and
7030         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7031
7032         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7033         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7034         reg to LR otherwise we'll be loading/storing from just the offset.
7035
7036 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7037
7038         Question: if we are storing gint32's inside the "*native_offset",
7039         should we change the signature to "gint32 *native_offset" to
7040         ensure that we do not have type definition problems?
7041         
7042         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7043         an int * as this is what the other function expects, causes
7044         problems with Freescale's compiler that defined int32_t to be a
7045         long and makes int incompatible 
7046
7047 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7048
7049         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7050         filename conflict with bjam.
7051
7052 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7053
7054         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7055         as it might use decomposed ops.
7056
7057 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7060
7061         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7062         is defined.
7063
7064         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7065
7066         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7067         offsets.
7068
7069         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7070         way registers are stored in MonoContext on arm.
7071
7072         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7073         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7074
7075         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7076
7077         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7078
7079         * mini.c (mini_init): Register mono_isfinite.
7080
7081         * jit-icalls.c (mono_isfinite): New jit icall.
7082
7083         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7084         
7085         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7086         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7087         the parent frame.
7088
7089 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7090
7091         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7092         separate frame and stack pointers, so we must use FP to find the register
7093         spill area.
7094         The FP reg is retrieved from the MonoContext::regs array.
7095
7096 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7097
7098         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7099         as FPA requires it.
7100
7101 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7102
7103         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7104         return R4 and R8 when not running under softfloat.
7105
7106         Fixes basic-calls.exe
7107
7108 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * mini-arm.c: Implement some overflow opcodes.
7111
7112 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7113
7114         * ssa.c: handle another alloca.h
7115
7116         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7117         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7118         MONO_ARCH_USE_SIGACTION. 
7119
7120         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7121         capability defines.
7122
7123         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7124
7125         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7126         PPC targets as sigaction does not exist on all platforms, define
7127         this on a per-platform basis.
7128
7129         Instead of erroring out if the platform is not defined, include
7130         mini-ppc-os.h, and expect that the OS specific setting provides
7131         the required information.   
7132
7133 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7134
7135         * aot-compiler.c: Fix --enable-minimal=aot.
7136
7137 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7138
7139         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7140         previous change.
7141
7142 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * exceptions-arm.c: Fix warnings.
7145
7146         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7147         ARM.
7148
7149         * mini-x86.c: Fix --enable-minimal=jit build.
7150
7151         * mini.c: Really fix --enable-minimal=jit build.
7152         
7153         * mini.c (construct_object_context_for_method): Move this outside
7154         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7155
7156         "Backported" of r124984 from 2.0 branch.
7157         
7158         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7159
7160         "Backport" of r124977 + r124978 from 2.0 branch.
7161         
7162         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7163         to avoid calling mono_exception_from_token () from the throw trampoline.
7164         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7165         for throwing corlib exceptions, this fixes full-aot support for corlib
7166         exceptions.
7167
7168         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7169
7170 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7171
7172         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7173         part of the changes to split the code in mini into operating
7174         system specific files.
7175
7176         This patch was done by copying mini.c to the respective files to
7177         preserve SVN history.
7178
7179 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7182
7183 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7184
7185         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7186         remoting-invoke-with-check wrappers of shared methods.
7187
7188         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7189
7190 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7191
7192         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7193         optimization if the top of stack is the last instruction in the
7194         bblock.  Otherwise it might have been used after its definition.
7195         Fixes #469742.
7196
7197 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7200         method as well when get_vcall_slot () fails to match a code sequence.
7201
7202         * mini-arm.c: Fix the android build, which doesn't have
7203         __aeabi_read_tp.
7204
7205 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7208         the s390x build.
7209
7210 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7211
7212         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7213
7214 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7217         and put its id into jinfo->used_regs. This is only used on amd64,
7218         which is currently the only platform generating unwind info.
7219
7220         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7221         the dwarf unwinder. This is required to correctly handle async exceptions
7222         like thread abort and stack overflows, which can happen while a method
7223         is in the middle of its prolog or epilog.
7224         
7225         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7226         the unwind info belonging to an AOTed method.
7227
7228         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7229         into cfg->unwind_ops.
7230         
7231         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7232
7233         * mini.c (mini_init): Call mono_unwind_init ().
7234         (mini_cleanup): Call mono_unwind_cleanup ().
7235
7236         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7237         unwind info to be shared between methods.
7238
7239         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7240         saved in the LMF.
7241
7242         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7243         get_throw_pending_exception () to avoid initialization races.
7244
7245         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7246         mono_arch_exceptions_init () function.
7247
7248         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7249
7250 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * mini.c (mono_get_domain_intrinsic): New helper function.
7253         (mono_get_thread_intrinsic): Ditto.
7254
7255         * mini-arm.c mini-ia64.c: Use the new helper functions.
7256         
7257         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7258         the last constrained_call change, since it is needed in the non-AOT
7259         case as well.
7260
7261         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7262         
7263         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7264         mono_get_lmf_addr () on arm eabi linux.
7265
7266 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7269         code sequence which matches a non-virtual call.
7270
7271 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7272
7273         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7274         stack pointer (r1).
7275
7276 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7277
7278         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7279         runtime-invoke wrappers, since they are also shared based on signature.
7280
7281 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7282
7283         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7284         info from the (correct) context.
7285
7286 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7287
7288         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7289         
7290         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7291         using dwarf unwinding info. Not yet used.
7292
7293         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7294
7295 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7296
7297         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7298         descriptors.
7299
7300         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7301         special case and handle mono_arch_delegate_invoke_impl() returning
7302         function descriptors.
7303
7304         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7305         trampolines return function descriptors, too.
7306
7307 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7310         out_of_line optimization.
7311
7312 2009-01-21  Martin Baulig  <martin@ximian.com>
7313
7314         * mini.h
7315         (MonoCompile): Added `disable_deadce_vars' to disable removing
7316         unused variables.
7317
7318         * mini.c
7319         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7320         inside the debugger.
7321
7322         * liveness.c (mono_analyze_liveness): Don't remove any unused
7323         variables if `cfg->disable_deadce_vars' is set.
7324
7325 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7326
7327         * method-to-ir.c: Only apply exception constructor optimization if
7328         the the method actually belongs to an exception class.  Fixes
7329         #467456.
7330
7331 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7334         change inside a #ifdef __mono_ppc64__.
7335
7336         * aot-compiler.c (compile_method): Remove the previous limitation.
7337
7338         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7339         on type variables in AOTed code.
7340         
7341         * aot-compiler.c (compile_method): Skip generic methods having type 
7342         constraints on their generic parameters.
7343
7344         * aot-compiler.c (compile_method): Check for methods which cannot be
7345         encoded inside RGCTX_FETCH patches as well.
7346
7347         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7348         build.
7349
7350 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7351
7352         * method-to-ir.c: Force the vtable variable in shared generic code
7353         for the case that they might show up on a stack trace where they
7354         are needed.
7355
7356         * mini-exceptions.c: Save and use generic sharing info as well as
7357         IP in stack traces to resolve shared generic instantiations.
7358
7359 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7362         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7363
7364 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7365
7366         * method-to-ir.c: Do generic sharing for array constructors.
7367
7368 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7369
7370         * mini-exceptions.c (mono_print_thread_dump): Add information
7371         about the thread state using wapi_current_thread_desc.
7372
7373 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7374
7375         * basic-simd.cs: Tests for the new constructors. 
7376
7377 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7378
7379         * mini-ops.h: Added OP_EXPAND_*
7380
7381         * cpu-x86.md: Same.
7382
7383         * mini-x86.c (mono_arch_output_basic_block): Same.
7384         
7385         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7386
7387 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7388
7389         * iltests.il.in: Add a test for #467385.
7390
7391 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7392
7393         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7394         thread been cleaned up is not the same currently in execution.
7395
7396         Fixes appdomain-unload crashes on windows, osx and linux variants
7397         without the __thread keyword.
7398
7399 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7400
7401         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7402         (koush@koushikdutta.com). Implement this for android.
7403
7404         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7405         begins with a digit.
7406
7407         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7408         mono_marshal_get_write_barrier ().
7409
7410 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7411
7412         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7413         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7414         that pass them on a register pair.
7415
7416         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7417         test was crashing due to that.
7418
7419 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7420
7421         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7422         trampoline code. Include ucontext.h only if available.
7423
7424 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7425
7426         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7427         and doesn't check whether it's sharable, like it was before
7428         removing the shared generics hash.  This brings IronPython
7429         performance back to what it was before that change.
7430
7431 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7432
7433         * method-to-ir.c: Handle delegate invocation optimization earlier,
7434         otherwise it would be handled (much more slowly) by the
7435         final/sealed optimization.
7436
7437 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7440         domain is not set. Fixes #465864.
7441
7442 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7443
7444         * method-to-ir.c: Don't stop sharing of generic methods with catch
7445         clauses - we already handle those.
7446
7447 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7448
7449         * mini.c, mini.h: lookup_generic_method() is now
7450         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7451         making the shared_generics_hash obsolete.
7452
7453 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7454
7455         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7456         use the red zone.  Make room on the stack first and then use it,
7457         not the other way around.
7458
7459 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * mini.c (mini_init): Call mono_xdebug_init ().
7462
7463         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7464
7465 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7468
7469         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7470         trampolines.
7471
7472         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7473         debug+unwind info for trampolines.
7474
7475         * mini.c (mono_create_unwind_op): New helper function.
7476
7477         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7478
7479 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * aot-compiler.c: Fix the build.
7482
7483 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * Makefile.am: Update dtrace-prelink.sh location.
7486
7487 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7490         optimization. Fixes #464520.
7491
7492 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7493
7494         * mini-amd64.c : Adding code to save/restore non-volatile registers
7495            on Winx64.
7496
7497         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7498           registers on Winx64.
7499
7500         Contributed under MIT/X11 license.
7501
7502 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7503
7504         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7505         __GNUC_MINOR__ which can break when the major version changes.
7506
7507 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7508
7509         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7510
7511 2009-01-07  Geoff Norton  <gnorton@novell.com>
7512
7513         * helpers.c:  Allow mono -v -v -v to work on darwin.
7514
7515 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7516
7517         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7518           pattern. 
7519
7520         Contributed under MIT/X11 license.
7521
7522 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7525         instead of directly accessing type->data.klass. Fixes #462016.
7526         (mono_allocate_stack_slots_full): Ditto.
7527
7528         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7529         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7530
7531         * aot-compiler.c (emit_plt): Fix ARM build.
7532
7533 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7536         
7537         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7538         change.
7539
7540         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7541         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7542         #463357.
7543
7544         * iltests.il.in: Add a regression test.
7545
7546 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7547
7548         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7549
7550 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7551
7552         * basic-simd.cs: Add a regression test for #462457.
7553
7554 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7555
7556         * mini-ops.h: Add a definition of XPHI.
7557
7558         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7559
7560         * ssa.c (op_phi_to_move): Handle XPHI.
7561
7562         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7563
7564         Fixes #462457
7565
7566 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7567
7568         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7569
7570 2008-12-31  Geoff Norton  <gnorton@novell.com>
7571
7572         * mini-ppc.c: The prolog size allocated can be too small for darwin
7573         ppc32 under certain circumstances.  Also fix a small logic bug.
7574
7575 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7578         while loading AOT methods.
7579
7580         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7581         since only the former is nulled out after a successful cast. This prevents
7582         crashes with rethrown exceptions when using --debug=casts.
7583
7584 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7585
7586         * mini.h: New macro for checking whether a method is final,
7587         i.e. whether the method or its class is marked final.
7588
7589         * method-to-ir.c: Use the new macro for all final-checks
7590         consistently.  Fixes the crash in the System.ServiceModel tests.
7591
7592 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7593
7594         * mini-exceptions.c (get_exception_catch_class): Corrected another
7595         overly strict assertion.
7596
7597 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7598
7599         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7600         Clobbering it is not allowed because the caller might use it as
7601         the vtable register in the interface call.
7602
7603 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7604
7605         * mini-exceptions.c (get_exception_catch_class): Corrected an
7606         overly strict assertion.
7607
7608 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7609         
7610         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7611
7612         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7613
7614         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7615
7616         * cpu-mips.md: correct lengths for certain long_ opcodes.
7617
7618         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7619
7620         * 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().
7621         
7622 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7623
7624         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7625         
7626 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7627         
7628         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7629         
7630 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7631
7632         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7633         next basic block.
7634         
7635 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7636
7637         * 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
7638
7639         * 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)
7640         
7641 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7642         
7643         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7644         
7645 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7648         gshared code. Fixes #458947.
7649
7650         * generics.cs: Add a test.
7651
7652 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7653         
7654         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7655         
7656         * mini-mips.c: first pass n32 code generation.
7657
7658         * mini-mips.h: datatypes and defines for n32 support.
7659
7660         * exceptions-mips.c: first pass n32 code generation.
7661         
7662         * tramp-mips.c: first pass n32 code generation.
7663         
7664         * cpu-mips.md: add long_ opcodes.
7665         
7666 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7667
7668         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7669
7670         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7671         
7672         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7673         
7674         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7675
7676         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7677
7678         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7679
7680         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7681
7682         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7683
7684         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7685
7686 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7689
7690 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7691
7692         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7693
7694 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7695
7696         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7697         descriptors for helper functions directly in front of the code.
7698
7699 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7700
7701         * method-to-ir.c: Removed an unnecessary assertion.
7702
7703 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7704
7705         * method-to-ir.c: Merge SGEN changes from the old JIT.
7706
7707 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * driver.c (compile_all_methods_thread_main): Handle failure of
7710         mono_get_method ().
7711
7712 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7713
7714         * mini-ppc.c: Merged with mini-ppc64.c.
7715
7716         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7717
7718         * Makefile.am: Use the same sources for PPC and PPC64.
7719
7720         * mini-ppc64.c: Removed.
7721
7722 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7725         code to mono_bb_is_fall_through.
7726         
7727         * branch-opts.c (mono_remove_critical_edges): Same.
7728
7729 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7730
7731         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7732         expect that an OP_BR_REG will be there.
7733
7734 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7735
7736         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7737         for the many branch ops. The original check miss OP_BR_REG.
7738
7739         Fixes #457574.
7740         
7741 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7742
7743         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7744
7745 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7748         while holding the aot lock.
7749
7750 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7751
7752         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7753         
7754 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7755
7756         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7757           to release all runtime callable wrappers held by the runtime.
7758
7759         Contributed under MIT/X11 license.
7760
7761 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7762
7763         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7764           for Winx64.
7765
7766         Contributed under MIT/X11 license.
7767
7768 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7769
7770         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7771         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7772
7773 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7774
7775         * cpu-mips.md: fix ckfinite length
7776
7777         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7778         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7779         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7780         
7781 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7782
7783         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7784         
7785 2008-12-08  Geoff Norton  <gnorton@novell.com>
7786
7787         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7788         size by 8 bytes as well.
7789
7790 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7791
7792         * basic-simd.cs: Fix method names for Vector16b.
7793         
7794 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7795
7796         * basic-simd.cs: Fix method names for Vector16sb.
7797
7798 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7799
7800         * basic-simd.cs: Fix method names for Vector8us.
7801         
7802 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7803
7804         * basic-simd.cs: Fix method names for Vector8s.
7805         
7806 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7807
7808         * basic-simd.cs: Fix method names for Vector4ui.
7809
7810 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7811
7812         * basic-simd.cs: Fix method names for Vector2l.
7813
7814 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7815
7816         * basic-simd.cs: Fix method names for Vector2d.
7817
7818 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7819
7820         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7821         that are extension methods.
7822
7823 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7824
7825         * basic-simd.cs: Fix method names for Vector4f.
7826
7827 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7830         as such. Fixes #456669.
7831
7832 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7833
7834         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7835         
7836 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7837
7838         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7839         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7840         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7841         (mips_adjust_stackframe): handle FP spills
7842                 
7843         * mini-ops.h: add mips_mtc1_s2
7844         
7845         * cpu-mips.md: add mips_mtc1_s2
7846         
7847 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * unwind.c: New file, move the unwind info encoding functions here from
7850         aot-compiler.c, so they could be used at runtime too.
7851
7852 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7853
7854         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7855         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7856         
7857 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7858
7859         * mini-mips.c: cleanup warnings
7860         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7861         (mips_adjust_stackframe): handle case of taking the address of stack locals
7862         
7863 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7864
7865         * aot-compiler.c: Implement a few functions missing from the asm writer.
7866         (emit_method_code): Only write symbols for methods when using the bin
7867         writer, since the assembler can't deal with the characters in our method
7868         names.
7869
7870         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7871
7872         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7873         call.
7874
7875         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7876         a bit to also restore %rax.
7877
7878 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7879
7880         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7881
7882 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7883
7884         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7885         arguments.
7886
7887 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7888
7889         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7890
7891         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7892         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7893
7894         * exceptions-ppc64.c: Removed.
7895
7896         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7897
7898 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7899
7900         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7901         tramp-ppc64.c.
7902
7903         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7904
7905         * tramp-ppc64.c: Removed.
7906
7907 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7910         the TYPESPEC table.
7911
7912 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7913
7914         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7915
7916         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7917         mini-ppc.h instead of mini-ppc64.h.
7918
7919         * mini-ppc64.h: Removed.
7920
7921 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7922
7923         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7924         
7925         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7926         
7927 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7928
7929         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7930         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7931         code easier.
7932
7933 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7934
7935         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7936
7937 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7938
7939         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7940
7941 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7942
7943         * basic-simd.cs: Tests for operator == and != on Vector4f.
7944
7945 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7946
7947         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7948
7949         * simd-intrinsics.c: Kill useless enum.
7950
7951 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7952
7953         * cpu-mips.md: add long_conv_to_ovf_i4_2
7954         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7955
7956 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7957
7958         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7959         
7960         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7961
7962 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7963
7964         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7965         
7966 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7967
7968         * basic-simd.cs: Add tests for new methods.
7969
7970 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7971
7972         * simd-intrinsics.c: Add support for operator == and !=
7973         on Vector4(u)i.
7974
7975         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7976
7977 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7978
7979         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7980
7981 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7982
7983         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7984
7985         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7986         MONO_PATCH_INFO_ICALL_ADDR.
7987
7988         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7989
7990         * aot-compiler.c: Resurrect full-aot support.
7991
7992 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7993
7994         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7995         
7996 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7997
7998         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7999         
8000 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * basic-simd.cs: Fix tests to work under ppc.
8003         Remove tests for methods that will be removed.
8004
8005 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8006
8007         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8008         generic type (via a typedef or typeref) correctly.
8009
8010 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8011
8012         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8013         diagnose an assertion failure.
8014
8015 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8016
8017         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8018         Fix trampoline size.
8019
8020         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8021         conversion opcodes are implemented natively instead via emulation.
8022
8023 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8024
8025         * cpu-mips.md: remove mips_xori
8026
8027         * mini-ops.h:  remove mips_xori
8028
8029         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8030
8031         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8032         
8033         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8034         
8035 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8036
8037         * cpu-mips.md: fix instruction lengths.
8038
8039         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8040
8041         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8042
8043         * mini-ops.h: fix slti / sltiu op profiles.
8044         
8045 2008-12-02  Martin Baulig  <martin@ximian.com>
8046
8047         * method-to-ir.c (mono_method_to_ir): Disable debugging
8048         information for the init locals block to make the debugger stop
8049         after all locals have been initalized.
8050
8051 2008-12-02  Martin Baulig  <martin@ximian.com>
8052
8053         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8054         running inside the debugger.
8055
8056 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8057
8058         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8059         is enabled.
8060
8061         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8062         alu->alu imm optimization which only shows if deadce is disabled.
8063
8064         * aot-compiler.c: Rename the function names for the binary and asm writers
8065         so they can coexist in the same process. Rework the xdebug code to use the
8066         asm writer. This avoids the need to call into the runtime to dump the
8067         debugging info. Add more debugging info for types.
8068
8069         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8070
8071         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8072         cpu description tables, they can't occur in cpu-<ARCH>.md.
8073
8074         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8075         the stack in CEE_LDFLDA. Fixes #450542.
8076
8077         * generics.cs: Add a new test.
8078
8079 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8080
8081         * mini-ops.h: updated MIPS opcodes
8082         * mini-mips.c: decompose long opts
8083         * mini-mips.h: decompose long opts
8084         
8085 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8086
8087         * cpu-mips.md: fix length on int_rem_un
8088         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8089         
8090 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8091
8092         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8093
8094         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8095
8096 2008-11-29  Martin Baulig  <martin@ximian.com>
8097
8098         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8099         mono_debug_using_mono_debugger() in addition to the
8100         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8101
8102 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8103
8104         * mini-ops.h: updated more MIPS opcodes
8105         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8106         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8107         
8108 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8109
8110         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8111
8112 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8113
8114         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8115         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8116         * mini-ops.h: correct selected mips opcode entries
8117         
8118 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8119
8120         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8121         make them work.
8122
8123 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8124
8125         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8126
8127 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8128
8129         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8130         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8131         * mini-mips.h: disable IMT
8132         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8133         
8134 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8135
8136         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8137
8138 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8139
8140         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8141
8142 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8145         consistency.
8146
8147 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8148
8149         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8150         for Set/GetVector aligned versions.
8151
8152 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8153
8154         * basic-simd.cs: Add tests for Get/SetVector.
8155
8156 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8157
8158         * mini.c: Removed g_slist_append_mempool().  Now in
8159         metadata/mempool.c.
8160
8161 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8162
8163         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8164         size properly and make the bounds check optional.
8165
8166         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8167         for SetVector and IsAligned.
8168
8169 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8170
8171         * mini.c: Remove unused mono_normalize_opcodes () function.
8172
8173 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8174
8175         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8176         using the new atomic add ops now.
8177
8178         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8179         add.
8180
8181 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8182
8183         * mini-ppc64.c: Several fixes.
8184
8185 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8186
8187         * cpu-mips.md: added jump_table
8188         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8189
8190 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8191
8192         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8193
8194 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8195
8196         * mini-ops.h: corrected a handful of MIPS opcodes.
8197
8198 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8199
8200         * aot-compiler.c: MIPS to use ELF writer
8201
8202 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8203
8204         * mini-codegen.c: remove MIPS specific assert.
8205
8206 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8207
8208         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8209         fixes.  PPC64 now passes most of the runtime regressions.
8210
8211 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8214         volatile intervals a bit.
8215
8216 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8217
8218         * basic-long.cs: New test case.
8219
8220 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * mini.c (mini_method_compile): Disable globalra for large methods for 
8223         now.
8224
8225         * regalloc2.c (order_moves): Add fp support.
8226
8227         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8228         source bblock ends with an OP_BR_REG.
8229
8230         * ratests.cs: Add a new test.
8231
8232 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8233
8234         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8235         sharing.  PPC64 now passes generics.exe.
8236
8237 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8238
8239         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8240
8241 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8242
8243         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8244         memory when mono_jit_info_table_find () can't find the method in the
8245         LMF case.
8246
8247         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8248         AOTed code too.
8249         
8250         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8251         writer too.
8252
8253 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8254
8255         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8256         Several fixes.  PPC64 now runs exceptions.exe and
8257         devirtualization.exe.
8258
8259 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8260
8261         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8262         arrays.exe and basic-math.exe.
8263
8264 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8265
8266         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8267         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8268
8269 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8270
8271         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8272
8273 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8274
8275         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8276
8277         * ir-emit.h: Move macros from method-to-ir.c to here.
8278
8279 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8280
8281         * mini-ops.h: Correct the long simd ops to use LREG.
8282
8283 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8284
8285         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8286         
8287         * mini-ops.h: Correct the dreg type of a few long opcodes.
8288
8289         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8290         Add netbsd support.
8291
8292 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8293
8294         * mini-ppc.c: remove negative stack references in epilog
8295         for platforms that don't support the red zone.
8296
8297 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8298
8299         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8300         point regs.  Now PPC64 passes basic-calls.exe.
8301
8302 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8303
8304         * basic-simd.cs: Add tests for accessors of Vector2l.
8305
8306 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8307
8308         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8309
8310         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8311         
8312         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8313
8314 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8315
8316         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8317         PPC64 passes basic-long.exe.
8318
8319 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8320
8321         * decompose.c: Decompose carry and overflow add on PPC64 like on
8322         other 64 bit archs.  Don't decompose sub at all on PPC64.
8323
8324         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8325         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8326         basic-long.exe.
8327
8328 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8329
8330         * basic-simd.cs: Add tests for accessors of Vector2d.
8331
8332 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8335
8336         * cpu-x86.md: Same.
8337
8338         * mini-x86.c (mono_arch_output_basic_block): Same.
8339         
8340         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8341
8342 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8343
8344         * basic-simd.cs: Add tests for accessors of Vector4f.
8345
8346 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8347
8348         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8349
8350         * cpu-x86.md: Same.
8351
8352         * mini-x86.c (mono_arch_output_basic_block): Same.
8353         
8354         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8355
8356 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8357
8358         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8359
8360 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8361
8362         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8363
8364         * cpu-x86.md: Same.
8365
8366         * mini-x86.c (mono_arch_output_basic_block): Same.
8367         
8368         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8369
8370 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8373
8374 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         * simd-intrinsics.c: Enable setters for Vector16sb.
8377
8378 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8379
8380         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8381
8382         * cpu-x86.md: Same.
8383
8384         * mini-x86.c (mono_arch_output_basic_block): Same.
8385         
8386         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8387
8388 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8389
8390         * simd-intrinsics.c: Implement setter for Vector8us.
8391
8392 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8395         for dead variables.
8396
8397 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8398
8399         * mini-ppc.c: remove references to the red zone in the prolog
8400         (for systems that don't support it).
8401
8402 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8403
8404         * cpu-ppc64.md: Fixed a few instruction lengths.
8405
8406         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8407         now.
8408
8409 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8410
8411         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8412         basic.exe now.
8413
8414 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8417
8418 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8419
8420         * mini-ops.h: Added OP_INSERT_I2.
8421
8422         * cpu-x86.md: Same.
8423
8424         * mini-x86.c (mono_arch_output_basic_block): Same.
8425         
8426         * simd-intrinsics.c: Implement setter for Vector8s.
8427
8428         * simd-methods.h: Add the names of get setters of Vector8s.
8429
8430 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8431
8432         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8433         
8434         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8435         parameters.
8436
8437         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8438
8439 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8440
8441         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8442         for PPC64.  An empty program runs now.
8443
8444 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8445
8446         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8447
8448         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8449         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8450         info for JITted code is emitted into a shared library, loadable into gdb.
8451
8452 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8453
8454         * Makefile.am: Changes to build PPC64.
8455
8456         * mini-arch.h: Include mini-ppc64.h on PPC64.
8457
8458 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8459
8460         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8461         in PPC code up to r119147.
8462
8463 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8464
8465         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8466         cpu-ppc64.md: Changes for PPC64.
8467
8468         Based on code submitted by andreas.faerber@web.de at
8469         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8470         X11/MIT license.
8471
8472 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8473
8474         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8475         cpu-ppc64.md: Copied from the corresponding PPC files from
8476         r118846.
8477
8478 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8479
8480         * mini-ops.h: Added OP_ROUND.
8481
8482         * cpu-x86.md: Added round.
8483
8484         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8485
8486         * basic-math.cs: Added test_0_round to test rounding.
8487
8488         Contributed under MIT/X11 license.
8489
8490 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8491
8492         * aot-compiler.c : Fix the Winx64 build.
8493
8494         Contributed under MIT/X11 license.
8495
8496 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8499         in OP_EXTRACT_R8 to avoid possible stack corruption.
8500
8501 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8502
8503         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8504
8505         * cpu-x86.md: Added extract_r8.
8506
8507         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8508         
8509         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8510         a couple of OP_EXTRACT_I4.
8511
8512         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8513
8514         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8515
8516 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8517
8518         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8519         and not 4.1. 
8520
8521 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8524         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8525
8526         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8527         are not needed any more.
8528
8529         * mini.h: Remove the unused INS_LIST macros.
8530
8531         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8532         longer needed.
8533
8534         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8535         ir-emit.h.
8536
8537         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8538         mono_alloc_ireg () instead.
8539
8540         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8541         macros.
8542
8543         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8544         on amd64.
8545
8546         * aot-runtime.c (load_aot_module): Disable AOT when running under
8547         CAS.
8548
8549         * mini-amd64.h: Change the monitor fastpath defines to check for
8550         !PLATFORM_WIN32 so they work on *bsd too.
8551
8552         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8553
8554         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8555
8556         * mini.h (MonoCompile): Remove new_ir flag.
8557
8558         * regalloc.h regalloc.c: Remove unused code.
8559
8560         * cpu-*.md: Remove more unused opcodes.
8561
8562         * simple-cee-ops.h simple-mini-ops.h: Removed.
8563
8564         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8565         
8566 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * aliasing.h: Removed.
8569
8570         * *.c: Remove references to aliasing.h and inssel.h.
8571
8572         * mini.c: Remove additional unused functions.
8573
8574         * mini-ops.h cpu-*.md: Remove unused opcodes.
8575
8576 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8577
8578         Remove the old JIT code.
8579
8580         * inssel*.brg: Removed.
8581
8582         * ssa.c abcremoval.c aliasing.c: Removed.
8583
8584         * ssa2.c: Renamed to ssa.c.
8585
8586         * abcremoval2.c: Renamed to abcremoval.c.
8587
8588         * *.c: Removed all !cfg->new_ir code.
8589
8590         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8591         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8592
8593         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8594         
8595 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8596
8597         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8598         to simplify the code and cut back on the number of global symbols in the AOT
8599         file.
8600         
8601         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8602
8603 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8604
8605         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8606         with the got/got_info tables.
8607
8608         * mini.h: Bump AOT file format version.
8609         
8610         * unwind.h: New file, contains definitions for stack unwinding.
8611
8612         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8613         to cfg->unwind_ops.
8614         
8615         * aot-compiler.c: Generalize the emitting of unwind information to use the
8616         information in cfg->unwind_ops.
8617
8618         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8619
8620         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8621         AOT method frames. Enable writing symbols for methods by default.
8622
8623 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8624
8625         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8626         and make it work with vectors of element sizes 1, 2 and 4.
8627
8628         * simd-intrinsics.c: Enable getter for all vectors with element size
8629         1, 2 or 4.
8630
8631         * simd-methods.h: Add the names of other getters.
8632
8633         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8634
8635         * cpu-x86.md: Same.
8636
8637         * mini-x86.c: Same.
8638
8639 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8640
8641         * mini-ppc.h: portability fix.
8642
8643 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8644
8645         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8646         buggy and will overwrite it.
8647
8648 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8649
8650         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8651         Use it to emit local symbols for all methods so AOTed methods show up with
8652         their full name in gdb/valgrind output.
8653
8654 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8655
8656         * mini-ppc.c: portability fixes.
8657
8658 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8659
8660         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8661         entries out of the if (!generic_shared...) code so it is always done.
8662         (mono_class_init_trampoline): Do the patching when running under valgrind
8663         too, newer versions of valgrind have no problems with it.
8664
8665 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8668         further sections.
8669
8670 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8671
8672         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8673         filters.
8674
8675 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8676
8677         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8678
8679 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8680
8681         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8682
8683         * cpu-x86.md: Same.
8684
8685         * mini-x86.c: Same.
8686
8687         * simd-intrinsics.c: Same.
8688
8689 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8690
8691         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8692
8693 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8694
8695         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8696         to work with more Vector types.
8697
8698 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8701         store the elemens directly instead of using and intermediate.
8702
8703 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8704
8705         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8706
8707         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8708         to preserve %eax for aot plt trampolines.
8709
8710         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8711         (encode_method_ref): Flag synchronized methods so they won't go through
8712         the AOT trampoline.
8713
8714         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8715         wrappers.
8716
8717         * cpu-ia64.md (jmp): Increase max length.
8718
8719 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8722         open generic classes.
8723
8724         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8725
8726         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8727         box+brtrue optimization since it causes test failures on x86.
8728
8729 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8730
8731         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8732
8733         * cpu-x86.md: Same.
8734
8735         * mini-x86.c: Same.
8736
8737         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8738         for simd ctor values. 
8739
8740         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8741         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8742
8743 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8744
8745         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8746         LogicalRightShift.
8747
8748         * simd-instrincs.c: Same.
8749
8750         * basic-simd.cs: Same.
8751
8752 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8753
8754         * ratests.cs: Add more tests.
8755
8756         * regalloc2.c (add_spill_code): Handle more corner cases.
8757
8758 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8759
8760         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8761         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8762         both the source an destination of an instruction.
8763
8764 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8765
8766         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8767         wapihandles.c: more portability changes.
8768
8769 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8770
8771         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8772         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8773         safe to execute in a signal handler and the kernel provides better
8774         the info in /proc/self/smaps. Avoid the assert on sigaction during
8775         cleanup.
8776
8777 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8780         do the bblock linking hack if it is actually needed.
8781
8782         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8783         up linking.
8784
8785         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8786         crash problem is fixed.
8787
8788         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8789         bblocks.
8790
8791         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8792         for catch clauses.
8793         (mini_method_compile): Set the starting value of next_vreg to 
8794         MAX_IREGS + MAX_FREGS when using globalra.
8795
8796         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8797         filter clauses with BB_EXCEPTION_HANDLER.
8798
8799         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8800
8801 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8802
8803         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8804         space for stdcall.  Fixes regressions on Win32.
8805
8806 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8809         bblocks.
8810         (linear_scan): Remove an assert which doesn't seem to be needed.
8811
8812         * local-propagation.c (mono_local_deadce): Avoid a call to
8813         MONO_DELETE_INS which would screw up the instruction linking.
8814
8815         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8816
8817         * regalloc2.c: Upgrade to work the current JIT code.
8818
8819 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8820
8821         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8822         case.
8823
8824         * aot-runtime.c: Remove some dead code.
8825
8826         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8827         consistency.
8828         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8829
8830         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8831         trampolines using sscanf since atoi doesn't work on large unsigned values.
8832
8833         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8834         Initialize code_size.
8835
8836 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8837
8838         * method-to-ir.c (mini_emit_inst_for_method): Make
8839         Interlocked.CompareExchange work for Int arguments on 32 bit
8840         archs, as well.
8841
8842 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8843
8844         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8845
8846 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8847
8848         * main.c Fix MSVC build.
8849
8850         Contributed under MIT/X11 license.
8851
8852 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8853
8854         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8855         alignment larger than 8 bytes are aligned correctly, too.
8856
8857         * mini.c: Honor the min_align field of MonoClass when laying out
8858         the stack.
8859
8860 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8863
8864         * aot-compiler.c (emit_plt): Fix a warning.
8865         
8866         * aot-compiler.c: Implement ARM support in the binary writer.
8867
8868 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8869
8870         * basic-simd.cs: Add test for getter with byref arg.
8871         Fix the naming of a few tests.
8872         Add missing checks to a test.
8873
8874 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8877
8878         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8879         most of the full-aot support for monitor enter/exit trampolines.
8880
8881         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8882         enter/exit trampoline creation functions.
8883
8884         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8885         make dist.
8886
8887 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8888
8889         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8890         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8891         implement the needed functionality without adding crap to the runtime.
8892
8893 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8896         non-x86 builds.
8897
8898         * mini.c (mono_build_date): New global version holding the build date in
8899         string format.
8900         
8901         * Makefile.am (buildver.c): Generate a file containing the build date.
8902
8903         * main.c: Set the build date from the generated file.
8904
8905         * mini.c (mono_get_runtime_build_info): New helper function returning build
8906         information in a string format.
8907         
8908         * driver.c (mono_main): Print the build date in --version.
8909
8910         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8911         file when the bind-to-runtime-version option is used.
8912
8913 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8916
8917 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8918
8919         * simd-methods.h: Rename prefetch methods.
8920
8921         * simd-intrinsics.c: Same.      
8922
8923 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8924
8925         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8926         sizes.
8927
8928 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * aot-compiler.c: Use the bundled elf header files instead of depending on
8931         the system one.
8932         
8933         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8934         mempool.
8935
8936         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8937         on every call.
8938
8939 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * cpu-x86.md: Add store nta ops.
8942
8943         * mini-ops.h: Same.
8944
8945         * mini-x86.c: Same.
8946
8947         * mini.h: Add an enum for simd prefetch modes.
8948
8949         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8950         of store. Use the changed code to support store nta.
8951
8952         * simd-intrinsics.c: Add prefetch ops for all vector types.
8953
8954 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8957         threads.
8958         
8959         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8960         names.
8961
8962         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8963         trampolines.
8964
8965 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8966
8967         * mini-x86.c: Fixed commit.
8968
8969 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8970
8971         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8972
8973 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8974
8975         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8976         and MONITOR_EXIT, for the ASM fastpaths.
8977
8978         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8979         available.
8980
8981         * mini.c, patch-info.h: Signature and patch infos for
8982         Monitor.Enter/Exit trampolines.
8983
8984         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8985
8986         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8987         Monitor.Enter/Exit ASM fastpath for Linux.
8988
8989 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8992
8993         * objects.cs: Add a new test.
8994         
8995         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8996
8997         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8998         if MONO_LOG_LEVEL is set.
8999
9000         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
9001
9002         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9003
9004         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9005         
9006         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9007         of file offsets. Align the sections belonging to the data segment to 
9008         PAGESIZE.
9009
9010 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9013         elf.h. Port it to amd64.
9014
9015 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9016
9017         * driver.c: Enable SIMD by default.
9018
9019 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9020
9021         * cpu-x86.md: Add prefetch op.
9022
9023         * mini-ops.h: Same.
9024
9025         * mini-x86.c: Same.
9026
9027         * mini.h: Add an enum for simd prefetch modes.
9028
9029         * simd-methods.h: Add prefetch function names.
9030
9031         * simd-intrinsics.c: Add prefetch ops for all vector types.
9032
9033 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9034
9035         * aot-compiler.c (emit_bytes): Speed this up a little.
9036
9037 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9038
9039         * aot-compiler.c: Add JIT time etc. statistics.
9040         
9041         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9042
9043         * mini.h (MonoCompile): Add 'got_offset' field.
9044
9045         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9046         method_got_offsets array.
9047
9048         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9049         wrappers.
9050
9051         * aot-compiler.c (compile_method): Add generic method instances referenced
9052         by the method to the list of methods to be compiled, this is required so if
9053         A<T> references B<T>, and another assembly references A<int>, then it will
9054         also get a copy of B<int>.
9055
9056         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9057         when checking for monitor enter/exit.
9058
9059 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9060
9061         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9062         for Monitor.Enter and Monitor.Exit if enabled.
9063
9064         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9065         Solaris.
9066
9067 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9070         of an OP_MOVE. Fixes #440046.
9071
9072         * basic-long.cs: Add a new test.
9073
9074 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9075
9076         * mini.h: Add synchronization note for the managed counter-part.
9077
9078         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9079         returns the simd caps of the current cpu.
9080
9081 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9082
9083         * basic-simd.cs: Remove Console.WriteLine.
9084
9085 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9086
9087         * basic-simd.cs: New tests for Vector2ul.
9088
9089 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9090
9091         * simd-intrinsics.c: Add new vector type Vector2ul.
9092
9093 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9094
9095         * basic-simd.cs: New tests for Vector2l.
9096
9097 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * cpu-x86.md: Add long version of most packed int ops.
9100
9101         * mini-ops.h: Same.
9102
9103         * mini-x86.h: Same.
9104
9105         * simd-intrinsics.c: Add new vector type Vector2l.
9106
9107 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9108
9109         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9110
9111         * simd-methods.h: Remove SN_op_BitwiseXor.
9112
9113 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9116         alignment.
9117
9118 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9119
9120         * basic-simd.cs: Test for Vector2d.
9121
9122         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9123         value.
9124
9125 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9126
9127         * cpu-x86.md: Add double version of all packed float ops.
9128
9129         * mini-ops.h: Same.
9130
9131         * mini-x86.h: Same.
9132
9133         * simd-intrinsics.c: Add new vector type Vector2d.
9134
9135         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9136
9137         * simd-methods.h: Add Duplicate.
9138
9139 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9140
9141         * basic-simd.cs: Test for packing with signed saturation.
9142
9143 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9146         found in the TYPESPEC table.
9147
9148 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9151         too.
9152
9153         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9154
9155         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9156         instead of the RVA, since the RVA can be changed by tools like the cil 
9157         stripper.
9158
9159         * method-to-ir.c (mono_method_to_ir2): Ditto.
9160
9161         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9162         (deserialize_variable): Ditto.
9163
9164 2008-10-25  Martin Baulig  <martin@ximian.com>
9165
9166         * debug-mini.c (write_variable): Use
9167         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9168
9169 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9170
9171         * cpu-x86.md: Add unsigned variants of packd and packw.
9172
9173         * mini-ops.h: Same.
9174
9175         * mini-x86.h: Emit the right instruction for packd and packw.
9176         Add unsigned variants of packd and packw.
9177
9178         * simd-intrinsics.c: Packd and packw were used in place of their
9179         unsigned variants. Change that.
9180         Add intrinsics for (Signed)PackWithSignedSaturation.
9181
9182         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9183
9184 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9185
9186         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9187
9188 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9189
9190         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9191
9192         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9193
9194         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9195         sse instructions.
9196
9197         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9198
9199 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9200
9201         * method-to-ir.c, mini.c: Special casing for the synchronized
9202         wrapper for the ldtoken+GetTypeFromHandle case.
9203
9204 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9205
9206         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9207
9208         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9209         created/split bblocks.
9210
9211 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9212
9213         * mini-ops.h: Add packed signed mul high.
9214         
9215         * cpu-x86.md: Same.
9216
9217         * mini-x86.c (mono_arch_output_basic_block): Same.
9218
9219         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9220
9221         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9222
9223 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9224
9225         * basic-simd.cs: Tests for Vector16sb.
9226
9227 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9230
9231 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9232
9233         * mini-ops.h: Add packed signed min, max and compare greater.
9234         
9235         * cpu-x86.md: Same.
9236
9237         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9238         saturation.
9239
9240         * simd-methods.h: Add CompareGreaterThan.
9241
9242         * simd-methods.h: Remove CompareEquals.
9243
9244         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9245
9246         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9247
9248         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9249         CompareEqual.
9250
9251 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9252
9253         * basic-simd.cs: Fix tests due to change in the API.
9254
9255 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9256
9257         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9258
9259 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9260
9261         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9262
9263         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9264         inst_offset as this has invalid values for LDADDR.
9265
9266 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9267
9268         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9269
9270         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9271
9272 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9275         for accessing field->data.
9276
9277 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9278
9279         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9280
9281 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9282
9283         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9284
9285         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9286
9287 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9290         from the cfg mempool.
9291
9292 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9293
9294         * basic-simd.cs: Tests for new methods in Vector8us.
9295
9296 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9297
9298         * mini-ops.h: Add multiply and store high.
9299         
9300         * cpu-x86.md: Same.
9301
9302         * mini-x86.c (mono_arch_output_basic_block): Same.
9303
9304         * simd-methods.h: Same.
9305
9306         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9307         and CompareEqual.
9308
9309 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9312         mono_class_setup_vtable ().
9313
9314         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9315         mono_class_get_vtable_entry () for accessing klass->vtable.
9316
9317         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9318
9319         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9320         found.
9321
9322         * method-to-ir.c (mono_save_token_info): Don't save references made from
9323         wrappers.
9324
9325         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9326         of generic instances.
9327
9328         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9329
9330 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9331
9332         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9333         OP_JMP depends on the method signature.  Calculate it properly.
9334
9335 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9336         
9337         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9338         called directly.
9339
9340         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9341         instances.
9342         (emit_extra_methods): Add another table mapping method indexes to 
9343         offsets in the extra_method_info table.
9344
9345         * mini.h: Bump AOT file format version.
9346         
9347         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9348         and mono_aot_get_method_from_token () into one function.
9349
9350 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9351
9352         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9353         separate counter.
9354
9355 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9356
9357         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9358         methods.
9359
9360         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9361         disable_aot.
9362
9363         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9364
9365         * mini.h: Bump aot file format version.
9366
9367         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9368         AOT file can contain native code for methods which are not in the METHOD
9369         table. Generate code for non-sharable generic instances of generic methods
9370         found in the METHODSPEC table.
9371         
9372         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9373         encoding generic type handles.
9374
9375         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9376         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9377
9378         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9379         macros + MONO_ADD_INS.
9380
9381         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9382         context as well.
9383
9384         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9385
9386         * mini.h: Bump aot file format version.
9387
9388         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9389
9390 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9391
9392         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9393         platforms, with definable stack alignment value.  Set to 16 now
9394         for all platforms.
9395
9396         * mini.c, mini.h, driver.c: Command line option for disabling
9397         stack alignment.
9398
9399 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9400
9401         * basic-simd.cs: Tests for new methods in Vector4ui.
9402
9403 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * mini-ops.h: Add packed int shuffle.
9406         
9407         * cpu-x86.md: Same.
9408
9409         * mini-x86.c (mono_arch_output_basic_block): Same.
9410
9411         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9412         extract mask, max, min, shuffle.
9413
9414         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9415
9416 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9417
9418         * basic-simd.cs: Tests for new methods in Vector8us.
9419
9420 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9421
9422         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9423         RuntimeTypeHandle, not a TypedReference.
9424
9425 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9426
9427         * simd-intrinsics.c: remove relocations.
9428
9429 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9430
9431         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9432         optimizations from the x86 backend.
9433
9434 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9435
9436         * simd-methods.h, simd-intrinsics.c: debloat method names and
9437         prepare for no relocations.
9438
9439 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9442         
9443         * cpu-x86.md: Same.
9444
9445         * mini-x86.c (mono_arch_output_basic_block): Same.
9446
9447         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9448         extract mask, max, min and sum of absolute differences.
9449
9450         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9451         method name.
9452
9453 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9454
9455         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9456         Renamed one test for consistency.
9457
9458 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9459
9460         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9461         fix to the code that deal with other blocks.
9462
9463 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9464
9465         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9466
9467 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9468
9469         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9470         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9471         able to process the source reg.
9472
9473 2008-10-16  Martin Baulig  <martin@ximian.com>
9474
9475         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9476
9477         * inssel.brg: Add `OP_HARD_NOP'.
9478
9479         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9480
9481         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9482         `OP_HARD_NOP' instruction when running inside the debugger.
9483
9484         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9485         `OP_HARD_NOP' instruction when running inside the debugger.
9486
9487 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9488
9489         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9490         now works. The issue with the regalloc tripping up no longer
9491         happens.
9492
9493         * simd-intrinsics.c (load_simd_vreg): Same.
9494
9495 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9496         
9497         * basic-simd.cs: Tests for new Vector8ui methods.
9498
9499 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9500
9501         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9502         only for type. This fixes crashes where MonoInst::klass is checked
9503         for ops of type != VTYPE or OBJ.
9504
9505         * simd-intrinsics.c (load_simd_vreg): Same.
9506
9507 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9508
9509         * mini-ops.h: Add ops for packed shuffle/max/avg and
9510         extract mask.
9511         
9512         * cpu-x86.md: Same.
9513
9514         * mini-x86.c (mono_arch_output_basic_block): Same.
9515
9516         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9517         extract mask.
9518
9519         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9520         to emit extract mask op.
9521
9522         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9523         to emit word shuffles.
9524
9525 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9526
9527         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9528         the largest alignment needed by a variable, but at least
9529         sizeof(gpointer).
9530
9531 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9532
9533         * basic-simd.cs: Tests for the fixes in the last commit.
9534
9535 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9536
9537         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9538         no longer handles STACK_PTR input.
9539
9540         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9541
9542         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9543         get_simd_vreg   but handles STACK_PTR input.
9544
9545         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9546         as the input can be an arbitrary pointer.
9547
9548         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9549         LDADDR local optimization directly otherwise use a store op.
9550
9551 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9552
9553         * basic-simd.cs: Tests for dup low and dup high.
9554
9555 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9556
9557         * mini-ops.h: Add dup low and dup high ops.
9558         
9559         * cpu-x86.md: Same.
9560
9561         * mini-x86.c (mono_arch_output_basic_block): Same.
9562
9563         * simd-intrinsics.c (vector4f_intrinsics): Same.
9564
9565 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * basic-simd.cs: Tests for recently added functionality.
9568
9569 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9570
9571         * mini-ops.h: Add remaining sse1 fp ops.
9572         
9573         * cpu-x86.md: Add remaining sse1 fp ops.
9574
9575         * mini-x86.c (mono_arch_output_basic_block): Same.
9576
9577         * mini.h: Add enum for simd FP compare conditions.
9578
9579         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9580
9581         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9582         so the backed can generate the appropriate op.
9583
9584 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9585         This patch squeese one more byte from the SimdIntrinsc struct.
9586
9587         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9588         a a shift amount intead of simply or'ing it.
9589
9590         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9591
9592         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9593         byte so we can have an aditional flags field without increasing struct size.
9594
9595         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9596         against the simd_supported_versions bitmask.
9597
9598         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9599
9600 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9601
9602         * mini.c: remove rawbuffer code (the only use here is unsafe because
9603         it takes locks during signal handling and the kernel now provides much
9604         better info in proc/pid/smaps these days).
9605
9606 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9609         OP_X86_PUSH_OBJ. Fixes #434620.
9610
9611         * objects.cs: Add a test.
9612         
9613 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9614
9615         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9616         that the packuswb/packusdw don't work with unsigned numbers for what
9617         would be negative numbers in signed format.
9618
9619         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9620         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9621
9622         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9623
9624         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9625
9626         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9627
9628         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9629
9630         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9631         add more ops.
9632
9633         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9634         version as the enum in mini.h.
9635
9636         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9637         for sse3 ops, check the simd_version field if present. This way the code
9638         works with all versions of sse.
9639
9640 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9641
9642         * simd-intrinsics.c: Fixed intrinsic name typo.
9643
9644         * mini.h: Added missing simd exported function.
9645
9646         * basic-simd.cs: Added tests for Vector4ui.
9647         Fixed broken test for Vector16b.
9648
9649 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9650
9651         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9652         the max length to 64.
9653
9654 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9655
9656         * method-to-ir.c: Only do the fast virtual generic method call for
9657         non-wrapper methods.
9658
9659         * mini.h, mini-trampolines.c: The new generic virtual remoting
9660         trampoline handles virtual method calls via the vtable (as done by
9661         the fast virtual generic method calls) to remoting proxies.
9662
9663         * mini.c (mono_jit_create_remoting_trampoline): For generic
9664         methods reate a generic virtual remoting trampoline.
9665
9666         * mini-amd64.h: Enable fast virtual generic method calls again.
9667
9668 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9669
9670         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9671         restore registers when doing tail calls.
9672
9673 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9674
9675         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9676         Vector4ui.
9677
9678 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9679
9680         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9681
9682 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9685
9686 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * basic-simd.cs: Retrofit for API changes.
9689
9690 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9691
9692         * mini-ppc.c: Handle integer stack arguments for tail calls.
9693
9694 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9695
9696         * optflags-def.h: Removed sse3 optimization.
9697
9698         * driver.c: Same.
9699
9700         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9701         sse3.
9702
9703         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9704
9705         * mini.h: Added enumeration with simd versions.
9706
9707         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9708         for detecting SSE3.
9709
9710         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9711
9712         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9713
9714 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9717
9718         * basic-simd.cs: Fixed test naming.
9719
9720 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9721
9722         * mini-ops.h: Added ops for packed and saturated math, shifts
9723         and packing/unpacking.
9724
9725         * cpu-x86.md: Added descriptors for the above ops.
9726
9727         * mini-x86.c: Added code to emmit the above ops.
9728
9729         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9730
9731 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * aot-compiler.c (compile_method): Enable AOT for generic code.
9734
9735         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9736
9737 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9738
9739         * mini.c: add a workaround for a common screwup that ends up blamed
9740         to mono (other processes blocking signal delivery).
9741
9742 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9743
9744         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9745         in the LDFLD/STFLD opcodes. Fixes #432673.
9746
9747         * iltests.il.in: Add a new test.
9748
9749 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini-arm.c: attach the thread in unmanaged->managed transitions
9752         using delegates (bug #433148).
9753
9754 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9755
9756        * basic-simd.cs: Use new ShuffleSel constants.
9757
9758 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9759
9760         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9761
9762         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9763         only disable simd intrinsics if no sse2 is detected.
9764
9765         * optflags-def.h: Added sse3.
9766
9767         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9768         is disabled.
9769
9770 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9771
9772         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9773         when adding delegate-invoke wrappers.
9774
9775 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9776
9777         * Makefile.am: Reenable the simd tests.
9778
9779 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9780
9781         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9782           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9783           other vreg is allocated to that hreg.
9784
9785         Contributed under MIT/X11 license.
9786
9787 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9788
9789         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9790         yet checked in.
9791
9792 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9793
9794         * basic-simd.cs: New test suite for SIMD intrinsics.
9795
9796         * Makefile.am: Added new tests.
9797
9798 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9799
9800         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9801
9802         * mini-ops.h: Same.
9803
9804         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9805
9806         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9807         using SSE2 aware opcodes.
9808
9809         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9810         is enabled, this code path is only reachable if conversion ops are emmited after
9811         mono_method_to_ir.
9812
9813         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9814
9815         This optimization saves 6 bytes per conversion against the old version.
9816
9817 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * aot-compiler.c (compile_method): Don't skip methods referencing 
9820         generic methods without a corresponding entry in token_info_hash, since
9821         encode_method_ref () can handle all generic methods now.
9822
9823         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9824         generic context is set.
9825         
9826         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9827         generic sharing of LDTOKEN.
9828
9829 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9830
9831         * mini-amd64.h: Temporarily disabled fast virtual generic method
9832         calls because it breaks the System.Runtime.Remoting tests.
9833
9834 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9837
9838         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9839         so inlining actually works.
9840         (check_inline_caller_method_name_limit): Ditto.
9841
9842 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9843
9844         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9845         64 bit safety (from Olaf Hering and Andreas Farber).
9846
9847 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9848         
9849         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9850         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9851         unused virtual call support code.
9852
9853         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9854         
9855         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9856         which can't use aot trampolines.
9857         (decode_patch): Don't create aot trampolines for methods which can't use
9858         them.
9859
9860         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9861         use aot trampolines.
9862
9863         * mini.h: Bump AOT image format version.
9864         
9865 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9866
9867         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9868         to save_token_info () since cmethod is inflated for constrained calls.
9869
9870         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9871
9872 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9873
9874         * Makefile.am: Add build rules for ppc64.
9875         This avoids the build failing at pedump with unresolved symbols
9876         due to lack of arch_sources. Instead it will now fail earlier
9877         due to lack of cpu-ppc64.md.
9878
9879         Contributed under MIT/X11 license.
9880
9881 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9882
9883         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9884         tail calls.
9885
9886         * iltests.il.in: Add test case for tail call with many arguments.
9887
9888 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9891         to the fast virtual generic method code until the aot case is fixed.
9892
9893 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9894
9895         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9896
9897 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9898
9899         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9900         thunks.
9901
9902 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9903         
9904         * simd-intrinsics.c: Forgot to add this one.
9905
9906         * mini-codegen.c: Fix macro in case SIMD is not supported.
9907
9908 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9909         
9910         This patch land initial JIT support for simd intrinsics.
9911
9912         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9913
9914         * Makefile.am: Added simd-intrinsics.c
9915
9916         * simd-intrinsics.c: New file with simd instrinsic related
9917         code.
9918
9919         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9920
9921         * cpu-x86.md: Add simd related instructions.
9922
9923         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9924
9925         * driver.c: Added two new --regression variants.
9926
9927         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9928
9929         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9930
9931         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9932         extract some complicated logic to helper functions.
9933
9934         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9935
9936         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9937
9938         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9939         the specialized simplification pass.
9940
9941         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9942
9943         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9944
9945         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9946         table.
9947
9948         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9949         if MONO_ARCH_NEED_SIMD_BANK is defined.
9950
9951         * mini-ops.h: Added the new simd ops.
9952
9953         * mini-x86.c: Added mono_arch_xregname.
9954
9955         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9956
9957         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9958
9959         * mini-x86.h: Define simd related MONO_ARCH macros.
9960
9961         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9962
9963         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9964
9965         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9966         MONO_CLASS_IS_SIMD to deal with simd related IR.
9967
9968         * mini.h (MonoInst): Added spill_var to the backend union.
9969
9970         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9971
9972         * mini.h: Added forward declarations of the new simd fuctions.
9973
9974         * optflags-def.h: Added new optimization names SIMD.
9975
9976         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9977
9978         * regalloc.h: Added support for working with 3 register banks.
9979
9980         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9981
9982         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9983
9984 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9985
9986         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9987
9988 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9991         instead of one on 64 bit systems.
9992
9993         * method-to-ir.c: Remove unused includes.
9994
9995 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9998         cfg->used_int_regs, since the two are different on arm.
9999
10000 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10001
10002         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10003         mono_method_get_vtable_index() to get the vtable index.
10004
10005 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10006
10007         * method-to-ir.c (mono_method_to_ir2): Don't create native
10008         wrappers for array methods, because they're never called (and if
10009         they were called they wouldn't work).
10010
10011 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10012
10013         * method-to-ir.c (mono_method_to_ir2): Array methods are
10014         special-cased and must not be invoked indirectly via the (M)RGCTX
10015         when generic sharing is turned on.  Fixes #431413.
10016
10017 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10018
10019         * method-to-ir.c: When generic sharing is active, call
10020         non-interface virtual generic methods via the standard trampoline.
10021
10022         * mini-trampolines.c: Handle virtual generic shared methods.
10023
10024         * mini.h, mini-x86.c, mini-x86.h: New argument for
10025         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10026         method thunks and which is the trampoline to call if the lookup
10027         fails.  Enable the virtual generic method thunk for x86.
10028
10029         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10030         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10031         argument but assert that it's NULL, because these archs don't yet
10032         implement the virtual generic method thunk.  Changes in the IMT
10033         thunk data structures.
10034
10035 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * aot-compiler.c (emit_globals): Avoid invalid characters in
10038         the static linking symbol.
10039
10040         * objects.cs: Add a test for the range check optimization. Fix warnings.
10041
10042         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10043         optimization from the current JIT.
10044
10045         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10046         later in decompose_array_access_opts () to allow more optimizations.
10047
10048         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10049         mono_decompose_soft_float () for consistency.
10050
10051         * mini-ops.h: Fix arguments of OP_STRLEN.
10052
10053         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10054         into a separate function.
10055         (reset_cast_details): Ditto.
10056         (handle_unbox): Save cast details. Fixes #431254.
10057
10058         * method-to-ir.c: Remove some obsolete FIXMEs.
10059
10060 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10061
10062         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10063
10064 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10065
10066         * mini-codegen.c: More work on macros to make them
10067         ready for multiple regbanks.
10068
10069 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10070
10071         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10072
10073         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10074
10075 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10076
10077         * mini-codegen.c (mono_spillvar_offset): Proper support for
10078         multiple regbanks.
10079
10080 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10081
10082         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10083         the stack overflow changes.
10084
10085 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10086
10087         * mini-codegen.c: Make all bank macros depend on reg_bank.
10088
10089         * mini-codegen.c (mono_local_regalloc): Make free mask
10090         initialization regbank aware.
10091
10092 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10093
10094         * mini-codegen.c (mono_local_regalloc): Extract callee
10095         mask selection to a function and make it regbank aware.
10096
10097 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10098
10099         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10100         code to deal with many regbanks.
10101
10102 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10103
10104         * mini-codegen.c: More fp->regbank changes.
10105
10106 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10107
10108         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10109         of a hardcoded constant.
10110
10111 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10112
10113         * method-to-ir.c (type_from_stack_type): Fix typo.
10114
10115 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini-ia64.c (emit_move_return_value): Convert float return values to
10118         double.
10119
10120         * objects.cs: Add a new test.
10121         
10122         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10123         VARARG methods to fix an assert later.
10124
10125         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10126         end so it at least compiles.
10127
10128 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10131
10132 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10133
10134         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10135         optimization to a new function (emit_optimized_ldloca_ir) and enable
10136         it for both ldloca and ldloca_s.
10137
10138 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10139
10140         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10141         gshared CASTCLASS code.
10142
10143         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10144         amd64, where the libc stack unwinder encounters stack frames referring to
10145         native code in unmapped memory.
10146
10147         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10148         sharing.
10149
10150         * generics.cs: Add new test.
10151
10152 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10155         add a check that one of the ARM_FPU_ constants is defined.
10156
10157         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10158         
10159         * mini-exceptions.c: Fix build on non-altstack platforms.
10160
10161         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10162         sharing of vtypes.
10163
10164         * ir-emit.h: Add a comment to NEW_PCONST.
10165
10166         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10167
10168         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10169
10170         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10171         after the changes to MonoJitDomainInfo.
10172
10173 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10174
10175         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10176
10177 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10178
10179         * mini-ppc.c: Compiler warning fixes.
10180
10181 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10182
10183         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10184         for pinvokes.
10185
10186 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10187
10188         * exceptions-ppc.c, mini-ppc.h: Compile
10189         mono_arch_handle_altstack_exception() on Darwin, too.
10190
10191 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10192
10193         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10194         work on archs which don't have generic sharing implemented, only
10195         without the vtable_arg.
10196
10197 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10198
10199         * mini.c: Added comment explaining why delegate ctor icall
10200         wrappers are compiled.
10201
10202 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10203
10204         * mini.c: Don't produce trampolines to delegate ctor icall
10205         wrappers but compile them upfront.
10206
10207 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10208
10209         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10210         runtime-set function when going back to managed code. Currently this
10211         is used to set back the protection on the soft ovf pages and/or to
10212         throw the stack overflow exception that happened in unmanaged code.
10213
10214 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10215
10216         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10217         runtime-set function when going back to managed code. Currently this
10218         is used to set back the protection on the soft ovf pages and/or to
10219         throw the stack overflow exception that happened in unmanaged code.
10220
10221 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10222
10223         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10224         the support code for restoring stack protection after stack overflows
10225         that happen in unmanaged code. Don't set the exec permission on the
10226         soft overflow area.
10227
10228 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10231         delegate->method_ptr is set. Fixes #428054.
10232
10233 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10234
10235         * tests.cs: Rename to ratests.cs.
10236
10237         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10238         emit_get_rgctx_... functions.
10239
10240 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10241
10242         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10243
10244 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10245
10246         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10247         before asserting that method is sharable.
10248
10249 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10250
10251         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10252         whether method needs a static RGCTX wrapper used instead of
10253         complex conditions.
10254
10255         * generic-sharing.c, mini.h: A few functions moved to
10256         metadata/generic-sharing.c.
10257
10258 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10259
10260         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10261         Generic code sharing for value types, which essentially means
10262         treating value type methods like static methods.  The RGCTX is
10263         passed in the same way.
10264
10265 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10266
10267         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10268         opcode when creating multi-dimensional arrays of open types.
10269
10270         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10271         open generic types.
10272
10273         * generics.cs: Add a test.
10274
10275         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10276
10277 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10278
10279         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10280
10281         * mini.c (mini_method_compile): Set it when running under the debugger. 
10282
10283         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10284         vreg optimization if the flag is set.
10285
10286         * driver.c (mono_main): Add --attach= option to pass options to
10287         the attach agent.
10288
10289         * mini.c (sigquit_signal_handler): Start the attach agent.
10290
10291         * ssapre.c: Disable this to save space since it is not yet ported to
10292         linear IR.
10293
10294         * regalloc2.c: Disable this to save space.
10295
10296         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10297
10298 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10299
10300         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10301         the -v option useful again.
10302
10303 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10306         --break-at-bb.
10307
10308         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10309         arrays of arrays. Fixes #428406.
10310
10311         * method-to-ir.c (mini_emit_castclass): Ditto.
10312
10313         * objects.cs: Add new test.
10314         
10315 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10316
10317         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10318         was wrong at it choked against target_type_is_incompatible for byref types.
10319
10320 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10323         places.
10324
10325 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10326
10327         * mini-exceptions.c: update a few more exceptions-related counters.
10328
10329 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10330
10331         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10332         new functions to allocate from persistent mempools.
10333
10334 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10335
10336         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10337         multiple register banks in the future.
10338
10339         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10340
10341 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10342
10343         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10344
10345         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10346
10347         * mini.h: Export type_to_eval_stack_type.
10348
10349         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10350         is only ins->klass of byref types.
10351
10352 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10353
10354         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10355         (mini_emit_memcpy2): Ditto.
10356
10357         * mini-amd64.c: Fix a warning.
10358
10359 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10360
10361         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10362         linking.
10363
10364 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10365
10366         * method-to-ir.c: Extract stloc micro-optimization to a
10367         function and apply it to all cases.
10368
10369 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10370
10371         * method-to-ir.c: Don't fail generic code sharing in cases we
10372         already support.
10373
10374 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10375
10376         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10377
10378 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10379
10380         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10381         implementation.
10382
10383 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10384
10385         * trace.c: make tracing more useful and correct, with per-thread
10386         id and indent info.
10387
10388 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10389
10390         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10391         doing a method call and the argument is an R4.
10392
10393 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10396         generic methods.
10397
10398 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10399
10400         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10401
10402 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10403
10404         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10405         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10406
10407 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10408
10409         * driver.c: Add a --agent argument (not supported yet) to load managed
10410         agent assemblies before loading the main assembly, similarly to how the
10411         Java VM handles agents.
10412
10413 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10414
10415         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10416         function to do stack layout of local variables.
10417
10418 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10419
10420         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10421         calculation.
10422
10423 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10426         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10427         JIT if DISABLE_JIT is defined.
10428
10429         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10430         defined.
10431
10432 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10433
10434         * iltests.il.in: Disable the fconv test on PPC (the result is
10435         undefined according to ECMA).
10436
10437 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10438
10439         * iltests.il.in: Enable tail call tests for PPC.
10440
10441         * mini.h: Add variable for storing incoming valuetype argument
10442         addresses for tail calls.
10443
10444         * mini-ppc.c: Implement valuetype arguments and return values for
10445         tailcalls on Linux.
10446
10447 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10448
10449         * mini-ppc.c: Partially implement tail calls (struct arguments and
10450         return values not supported).
10451
10452         * method-to-ir.c: Enable tail calls on PPC.
10453
10454 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10457         runtime-invoke wrappers to work around the problem of them getting
10458         assigned to a random class.
10459
10460         * aot-runtime.c (mono_aot_get_method): Ditto.
10461         
10462 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10463
10464         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10465         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10466
10467 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10468
10469         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10470         until they're implemented properly.
10471
10472         * exceptions-ppc.c: Use arch-independent exception-handling code
10473         instead of custom one.
10474
10475         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10476         for Linear IR.
10477
10478         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10479
10480         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10481         applies when __powerpc__ is defined.
10482
10483 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10484
10485         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10486         methods to their code to avoid computing the full name of wrappers and
10487         doing a lookup in a string hash table.
10488
10489 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10490
10491         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10492         we identify bblocks before method_to_ir () is ran.
10493
10494         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10495         Also avoid optimizing branches pointing to themselves.
10496
10497         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10498
10499 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10500
10501         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10502
10503 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10504
10505         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10506         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10507         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10508         'buf'.
10509
10510         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10511         jumped to the same entry in plt_jump_table.
10512
10513 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10514
10515         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10516         dynamic images.
10517
10518 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10519
10520         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10521         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10522         #421807.
10523
10524 2008-08-29  Geoff Norton  <gnorton@novell.com>
10525
10526         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10527         segment, and doesn't properly handle .space as .text.  Fixes
10528         AOT Mach/ARM
10529
10530 2008-08-29  Geoff Norton  <gnorton@novell.com>
10531
10532         * mini.c: Disable the mach exception handler when running on 
10533         ARM
10534
10535 2008-08-29  Geoff Norton  <gnorton@novell.com>
10536
10537         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10538         globals on Darwin/ARM
10539
10540 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10543         since too many things depend on it. Instead, call 
10544         mono_runtime_set_no_exec ().
10545         
10546         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10547         the new JIT.
10548
10549         * aot-compiler.c: Add an 'asm-only' AOT option.
10550
10551         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10552                 
10553         * aot-compiler.c (compile_method): Disable gshared support for now as it
10554         doesn't yet work.
10555
10556 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10557
10558         * mini-amd64.h : Fix a compiler warning.
10559
10560         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10561           Changed to use a callback function to retrieve the unwind info.
10562           This avoids problems observed when code blocks were removed by
10563           unloading an app domain.
10564
10565         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10566           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10567           to work properly.
10568
10569         Contributed under MIT/X11 license.
10570
10571 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10572
10573         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10574           case to keep the stack aligned to 8.
10575
10576         Contributed under MIT/X11 license.
10577
10578 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10579
10580         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10581         avoid repeated linear searches.
10582
10583 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10586         methods it can't handle.
10587         
10588         * aot-compiler.c (add_method): Avoid adding a method twice.
10589         (add_wrappers): Add runtime invoke wrappers for all methods.
10590
10591         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10592         function to create an aot-compatible version of this trampoline.
10593
10594         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10595
10596 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10599
10600         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10601         with a generic sharing failure.
10602
10603         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10604
10605         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10606         CEE_RETHROW. Fixes #419634.
10607
10608         * mini.c (mono_method_to_ir): Ditto.
10609
10610         * exceptions.cs: Add a new test.
10611         
10612         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10613         to mono_type_stack_size_internal () since some callers might not pass in
10614         an rgctx.
10615
10616         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10617         instrument_prolog. Fixes #419878.
10618
10619         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10620         doubles in soft float mode volatile.
10621
10622 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10625
10626         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10627         to handle soft float correctly.
10628
10629         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10630         the fast path.
10631
10632         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10633
10634         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10635         to sp, since the generics catch code requires it.
10636
10637         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10638         copying.
10639
10640         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10641         mono_arch_emit_imt_argument ().
10642
10643         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10644
10645         * mini-arm.c tramp-arm.c: Generic sharing updates.
10646
10647 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * mini-arm.c: Fix the arm build.
10650
10651         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10652         handling enums, generic instances and generic sharing.
10653         (mini_type_stack_size_full): Ditto.
10654
10655         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10656         
10657         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10658
10659         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10660
10661         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10662         trampolines.
10663
10664         * mini-arm.c: Various small generic sharing changes.
10665
10666         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10667         this for x86.
10668         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10669         custom code.
10670
10671         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10672         helper function to return a generic class init trampoline.
10673
10674         * method-to-ir.c mini.c: Use it.
10675         
10676         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10677         arch-specfic function to return a generic class init trampoline.
10678
10679         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10680         the GENERIC_CLASS_INIT custom code.
10681
10682         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10683         a fatal error, not a sharing failure.
10684
10685         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10686         needed.
10687
10688         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10689         trampoline argument from MONO_ARCH_VTABLE_REG.
10690
10691         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10692         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10693         argument, and pass the vtable in VTABLE_REG.
10694
10695         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10696         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10697         argument, and pass the vtable in VTABLE_REG.
10698         (mono_arch_create_trampoline_code_full): Remove some special casing for
10699         the rgctx fetch trampoline.
10700
10701         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10702         Fixes #419273.
10703
10704         * iltests.il: Add a test for it.
10705
10706 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10709
10710         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10711         no longer needed.
10712
10713         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10714         use mono_jit_info_table_find () to avoid recursion.
10715         (mono_delegate_trampoline): Add a sync wrapper here.
10716
10717         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10718         here.
10719
10720         * mini.c (mono_method_to_ir): Ditto.
10721         
10722         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10723         add_sync_wrapper argument. Don't add a sync wrapper here.
10724         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10725
10726         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10727         
10728 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10729
10730         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10731           of nonvolatile registers back from MonoContext to CONTEXT.
10732
10733         Contributed under MIT/X11 license.
10734
10735 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10736
10737         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10738           arguments on Winx64 there are only 4 argument registers.  For this
10739           logic to work the last argument must be pulled from the stack.  
10740
10741         Contributed under MIT/X11 license.
10742
10743 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10746
10747         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10748         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10749         encode/decode_method_ref ().
10750
10751         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10752
10753         * aot-runtime.c (decode_patch): Ditto.  
10754
10755         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10756         MONO_PATCH_INFO_METHOD.
10757
10758         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10759         MonoGenericJitInfo.
10760
10761         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10762         MonoGenericJitInfo.
10763
10764         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10765
10766         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10767         one from the caller.
10768
10769         * aot-runtime.c (decode_generic_inst): New function to decode and
10770         return a interned generic inst.
10771         (decode_klass_ref): Use it.
10772         (decode_method_ref): Ditto.
10773
10774         * aot-compiler.c (emit_exception_debug_info): Save 
10775         jinfo->has_generic_jit_info too.
10776
10777 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10780
10781         * iltests.il.in: Add a test for fconv_to_i.
10782
10783         * liveness.c: Disable the liveness2 pass for now to save space.
10784
10785         * regalloc2.c: Include mempool-internals.h to fix warnings.
10786
10787         * aot-compiler.c (encode_method_ref): Encode the context of generic
10788         instance methods.
10789
10790         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10791         the context saved in the aot file.
10792
10793         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10794
10795         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10796
10797         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10798         volatile so they won't be optimized away.
10799
10800 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10801
10802         * ssa.c:
10803         * ssa2.c:
10804         * mini.c:
10805         * regalloc2.c:
10806         * dominators.c: Remove duplicated functions that now are in
10807         mempool-internals.h.
10808
10809 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * aot-compiler.c: Fix warnings.
10812
10813         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10814
10815         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10816
10817         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10818         as the patch type.
10819
10820         * mini.c (mono_resolve_patch_target): Ditto.
10821         
10822         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10823         (encode_klass_ref): Add support for encoding VARs/MVARs.
10824
10825         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10826
10827         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10828         the handling of the got entries into a separate 'decode_got_entry' function.
10829         Add support for RGCTX_FETCH.
10830
10831         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10832         clobbered by the trampoline code.
10833
10834         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10835         not clobbered by the indirect calling code.
10836
10837 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10838
10839         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10840         to fix the build.
10841
10842 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10843
10844         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10845         signature using the compilation mempool otherwise we would leak it.
10846
10847 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10850         mono_emit_abs_call ().
10851
10852         * patch-info.h: Add GENERIC_CLASS_INIT.
10853
10854         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10855
10856         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10857         as their target as a near call.
10858
10859         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10860         ABS handling code.
10861         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10862
10863         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10864         call to a runtime function described by a patch.
10865
10866         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10867         mono_emit_abs_call, this has the advantage that the ABS handling code in
10868         mono_codegen () can handle them both, and can handle other stuff in the
10869         future without additional code.
10870
10871         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10872         entry.
10873         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10874         abs addresses.
10875
10876         * mini.h: Add missing bblock related prototypes.
10877
10878         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10879         reverse_inst_list_len fields.
10880
10881         * mini.c: Refactor this file a bit by moving branch optimizations to 
10882         branch-opts.c.
10883
10884         * method-to-ir.c: Merge generic sharing changes missed earlier.
10885
10886         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10887
10888         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10889         shared patches. Process METHODCONST as a shared patch.
10890
10891         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10892         as it crashes on the 2.0 mscorlib.
10893
10894         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10895         to cause crashes.
10896         
10897         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10898         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10899         by IMT.
10900
10901         * aot-compiler.c: Reorganize the got handling code to be a bit more
10902         understandable.
10903
10904 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10907         mono_patch_info_equals/hash, and use it to massively simplify
10908         get_plt_index ().
10909
10910         * mini.c (mono_patch_info_hash): Simplify this and add support for
10911         more patch types.
10912
10913         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10914
10915         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10916         handling code, since an offset is not enough to identify a trampoline.
10917
10918         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10919
10920 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10921
10922         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10923
10924         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10925
10926         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10927
10928         * decompose.c: PPC decompositions for various ops.
10929
10930         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10931
10932 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10935         call the generic trampoline code using a call, instead of a jump, to
10936         remove some special casing from the generic trampoline code.
10937
10938         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10939         (mono_codegen): Ditto.
10940
10941         * aot-compiler.c aot-runtime.c: Ditto.
10942
10943         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10944
10945         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10946         helper function to find the offset corresponding to a lazy fetch trampoline.
10947
10948         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10949         when doing generic sharing.
10950
10951         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10952         places.
10953         
10954         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10955         mini-trampolines.c to be with the other trampoline creation functions.
10956
10957         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10958         as it is equal to method->signature in most cases, add a 
10959         mono_emit_method_call_full variant which takes a signature and an imt
10960         argument as well.
10961
10962 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10965         to this function, since it could be computed easily from the method 
10966         argument.
10967         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10968         more.
10969
10970         * method-to-ir.c mini.c: Remove references to 
10971         compile_generic_method_wo_context.
10972
10973         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10974         generic method calls.
10975         
10976         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10977         dimensional non-szarrays.
10978
10979         * mini.c (mini_init): Register mono_array_new_1.
10980
10981         * jit-icalls.c (mono_array_new_1): New jit icall.
10982
10983         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10984         pointing to the method.
10985
10986         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10987         method addresses belonging to METHOD_JUMP patches in the 
10988         jump_target_got_slot_hash.
10989         (mono_aot_load_method): Ditto.
10990
10991         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10992         METHOD_JUMP patches.
10993
10994         * mini.c (mini_create_jit_domain_info): New helper function which 
10995         initializes/frees domain->runtime_info.
10996         (mini_free_jit_domain_info): Ditto.
10997         (mini_init): Install the domain hook functions with the runtime.
10998
10999         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
11000         information maintained by the JIT.
11001
11002         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11003         insertion into jump_table_hash into mono_codegen (), also implement proper
11004         locking.
11005
11006         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11007         tail calls, it is already done by the aot code.
11008         
11009         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11010         mechanism on amd64.
11011
11012         * iltests.il.in: Make the jmp test a bit more complex.
11013
11014         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11015         generic instances which doesn't have a token.
11016
11017         * aot-runtime.c (decode_method_ref): Ditto.
11018         
11019         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11020         can handle this case now.
11021         (handle_box): Ditto.
11022
11023 2008-08-15  Geoff Norton  <gnorton@novell.com>
11024
11025         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11026         debugging check.
11027
11028 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11029
11030         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11031         calling generic methods.
11032
11033         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11034
11035         * aot-runtime.c (decode_patch_info): Ditto.
11036
11037         * mini.c (mono_resolve_patch_target): Ditto.
11038         
11039         * patch-info.h: Add METHOD_RGCTX.
11040
11041         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11042
11043 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11044
11045         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11046         arguments in registers.
11047
11048         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11049         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11050
11051         * mini.c (mini_method_compile): Abort aot compilation for generic
11052         methods if generic sharing is disabled.
11053         
11054         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11055         an mrgctx.
11056
11057         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11058         requiring an mrgctx.
11059
11060         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11061         store instructions when converting a vcall to a normal call.
11062
11063         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11064         mono_arch_find_jit_info.
11065
11066 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11069         avoid calling mono_method_full_name () for every method even if the
11070         env var is not set.
11071         (check_inline_caller_method_name_limit): Ditto.
11072
11073 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11076         assemblies in one run.
11077
11078         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11079         skipped methods if it is not 0.
11080
11081         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11082
11083 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11084
11085         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11086           MONO_ARCH_HAVE_UNWIND_TABLE.
11087
11088         Contributed under MIT/X11 license.
11089
11090 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11091
11092         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11093           from default optimizaton list on Winx64.
11094
11095         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11096
11097         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11098           the LMF from the MonoJitTlsData structure.
11099
11100         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11101
11102         Contributed under MIT/X11 license.
11103
11104 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * mini.c (sigsegv_signal_handler): Fix the build.
11107
11108         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11109         assembly->aot_module.
11110
11111         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11112         hash table. This simplifies and speeds up a lot of code, and fixes support
11113         for .netmodules.
11114
11115         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11116         with the runtime.
11117
11118         * mini-exceptions.c: Ditto.
11119         
11120         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11121         'native_offset' argument, since these are computed in the 
11122         mono_find_jit_info () function.
11123
11124         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11125         is used by exceptions-ppc.c.
11126
11127         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11128         mono_arch_find_jit_info ().
11129         
11130         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11131         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11132         generic code in mini-exceptions.c.
11133
11134 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11137
11138         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11139         
11140         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11141         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11142         called while holding the loader lock. Fixes #415608.
11143         (mono_aot_get_method_from_token_inner): Ditto.
11144
11145 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11148         to reduce differences between this and the generic implementation in
11149         mini-exceptions.c.
11150         (ves_icall_get_frame_info): Ditto.
11151
11152         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11153
11154         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11155         longer neccesarry.
11156
11157         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11158         mono_arch_get_call_filter () and make it non-static, for consistency with the
11159         other architectures.
11160
11161 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11162
11163         * mini.c:
11164         * local-propagation.c:
11165         * mini-x86.c: Correct the name of arch defines.
11166
11167 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11168
11169         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11170         NO_EMULATE_LONG_SHIFT_OPS define.
11171
11172 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11175         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11176
11177         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11178         MACH fixes. Merged from the 2.0 branch.
11179
11180         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11181
11182         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11183         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11184
11185         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11186
11187         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11188         mono_marshal_get_native_wrapper () signature changes.
11189
11190 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11191
11192         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11193         conversion bug under arm.
11194
11195 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11196
11197         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11198
11199         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11200         with overflow checking.
11201
11202 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11203
11204         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11205         to the genmdesc.pl file
11206
11207 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11208
11209         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11210         arg_array in the soft-float versions of the LOAD/STORE macros.
11211
11212         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11213         implementation.
11214
11215         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11216
11217 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11220         a float HFA. Fixes #413621.
11221
11222 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11223
11224         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11225         frame_size to args_size. Fixes build.
11226
11227 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11228
11229         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11230         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11231
11232         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11233         the stack are not unaligned. Fixes #413247.
11234         
11235 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11236
11237         * mini.c: update jitted methods performance counters.
11238
11239 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11240
11241         * mini-exceptions.c: increase the exceptions thrown performance
11242         counter in mono_handle_exception ().
11243
11244 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11245
11246         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11247         can work with netmodules.
11248
11249 2008-07-28  Geoff Norton  <gnorton@novell.com>
11250
11251         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11252         regression tests.
11253
11254 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11255
11256         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11257         correct place.
11258
11259 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11260
11261         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11262           The float param registers and other param registers must be the 
11263           same index on Windows x64.
11264
11265         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11266           ArgValuetypeAddrInIReg argument case.  Setting the argument
11267           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11268
11269         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11270           variable computed above as the copy length for arguments of storage
11271           type ArgValuetypeAddrInIReg.
11272
11273         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11274           ArgValuetypeAddrInIReg argument case.  This case will rely on
11275           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11276
11277         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11278           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11279           jump and tail call instructoins as they do not follow the typical call behavior.
11280
11281         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11282           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11283           local variable and pass the local variable by reference to the called method.
11284
11285         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11286           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11287           of a struct is passed in a register it must be saved with the other
11288           volatile argument on the stack.
11289
11290         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11291           frame pointer the stack adjustment value must be saved to the unwind 
11292           info structure.
11293
11294         Contributed under MIT/X11 license.
11295
11296 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11299         which got lost in the merge.
11300
11301 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11302
11303         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11304         build.
11305
11306         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11307         
11308         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11309         icalls, since they won't be patched.
11310
11311         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11312         different code sequence when running under valgrind to prevent some valgrind
11313         errors.
11314
11315         * iltests.il.in: Add new regression test.
11316
11317         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11318         end with a throw.
11319
11320         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11321         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11322
11323         * iltests.il.in: Add new test.
11324
11325         * aot-compiler.c: Fix some warnings.
11326
11327         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11328         Fixes #412494.
11329
11330 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11333         (mini_usage_jitdeveloper): Add a missing --wapi option.
11334
11335 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11336
11337         * mini-codegen.c: Simplify the is_fp macros.
11338         (free_up_ireg): Remove, use free_up_reg instead.
11339         (free_up_reg): Fix the fp case.
11340
11341 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11342
11343         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11344         lowered earlier.
11345
11346         * exceptions-x86.c: Merge some changes which seemed to have got lost
11347         in the linear-ir merge.
11348
11349         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11350
11351         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11352         long vreg volatile even if the variable was already created.
11353
11354         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11355         volatile variables.
11356
11357 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11358
11359         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11360
11361         * mini.c (mono_jit_compile_method_inner): Add support for 
11362         MONO_EXCEPTION_BAD_IMAGE.
11363
11364         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11365         mini_method_get_context () returns NULL. Fixes #356531.
11366
11367         * mini.c (mono_method_to_ir): Ditto.
11368         
11369         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11370         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11371
11372 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11373
11374         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11375         in the LDFTN implementation.
11376
11377 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11378
11379         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11380         code, patch calls to icalls, too, even if they're not in the
11381         shared generic code hash.  Fixes #411962.
11382
11383 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11384
11385         * cpu-x86.md: Increase the length of the fcall opcodes.
11386
11387         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11388         calls returning floats.
11389
11390         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11391         on NEWARR.
11392         
11393         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11394         missed earlier.
11395
11396         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11397         into the domain->method_code_hash.
11398
11399         * aot-compiler.c: Fix win32 build.
11400
11401         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11402         
11403         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11404         gshared NEWARR implementation.
11405
11406         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11407
11408         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11409         can be used outside of method_to_ir.
11410
11411         * mini.h (MonoCompile): Add arg_types field.
11412
11413         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11414         
11415         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11416         the values of the local arg_array and param_types array.
11417
11418 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11419
11420         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11421         got accesses might only get generated later when NEWOBJ is decomposed.
11422         
11423         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11424         looking up the native code of the target method when a delegate is called
11425         for the first time.
11426
11427         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11428         optimization.
11429
11430         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11431
11432         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11433         AOT work on platforms without a working dlsym implementation.
11434
11435         * mini.h: Bump AOT image format version.
11436         
11437 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11438
11439         * mini-exceptions.c: Free a MonoType with
11440         mono_metadata_free_type() instead of g_free().
11441
11442         * aot-runtime.c: Free a MonoType.
11443
11444 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11447         optimization.
11448
11449         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11450         fp stack on x86.
11451
11452 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11453         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11454         profiler hook.
11455
11456 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11459         NEWOBJ calls on valuetypes.
11460
11461         * iltests.il.in: Add new test.
11462
11463         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11464
11465 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11466
11467         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11468         is no longer needed.
11469
11470         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11471         non register sized integer arguments.
11472         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11473         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11474         emit_memcpy2 ().
11475
11476         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11477         CEE_MONO_RETOBJ.
11478         
11479         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11480         two a binop with different sized arguments is emitted.
11481
11482         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11483         instruction in the ins==NULL case.
11484
11485 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11488
11489         * mini-x86.c: Fix osx build.
11490
11491         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11492         opcodes as well.
11493
11494         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11495         instruction for non int sized variables.
11496
11497         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11498         implementation.
11499
11500 2008-07-23  Robert Jordan  <robertj@gmx.net>
11501
11502         * method-to-ir.c: Fix MSVC build.
11503
11504 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11505
11506         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11507         a non int sized type, widen it to an int since newer versions of gcc seem to
11508         generate code which needs this.
11509
11510         * ssa2.c abcremoval2.c: Fix warnings.
11511
11512         * *: Merge the Linear IR branch.
11513
11514         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11515         the ChangeLog file there describes all the changes done over the years. 
11516         Further documentation can be found at www.mono-project.com/Linear_IL.
11517
11518 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11519
11520         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11521           The float param registers and other param registers must be the 
11522           same index on Windows x64.
11523
11524         Contributed under MIT/X11 license.
11525
11526 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11527
11528         * mini.c: Make the previous fix GC safe.
11529
11530 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11531
11532         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11533
11534 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11535
11536         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11537           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11538           ArgValuetypeAddrInIReg instead.
11539
11540         Contributed under MIT/X11 license.
11541
11542 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * mini-codegen.c (get_register_spilling): Fix a warning.
11545
11546 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11547
11548         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11549         for types which the initialization fails. Raises the provided exception
11550         at the right stop after cleanup.
11551
11552 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11553
11554         * aot-compiler.c: Free most of the memory allocated during compilation.
11555
11556         * mini.c (mini_parse_debug_options): Fix a leak.
11557         
11558         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11559         during aot compilation.
11560
11561 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11562
11563         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11564         it has too much register pressure.
11565
11566 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11569
11570 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11573         on x86.
11574
11575         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11576         on amd64 similar to the way it is done on arm.
11577
11578         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11579
11580         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11581         consistency, normalize error messages, avoid loading aot-only modules in
11582         normal mode.
11583
11584         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11585         for consistency.
11586
11587         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11588
11589 2008-07-11  Martin Baulig  <martin@ximian.com>
11590
11591         * debug-debugger.h
11592         (MonoDebuggerInfo): Add `interruption_request'.
11593
11594 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11595
11596         * aot-compiler.c (emit_plt): Remove some dead code.
11597
11598         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11599
11600         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11601         return the plt info offset belonging to a given plt entry.
11602
11603         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11604         mono_aot_get_plt_info_offset.
11605         
11606         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11607         similar to the amd64 code by makeing jumps through a separate jump table 
11608         instead of embedding the jump addresses into the code.
11609
11610 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11613         method.
11614
11615 2008-07-10  Martin Baulig  <martin@ximian.com>
11616
11617         * mini.c (mini_method_compile): Disable generics sharing when
11618         running in the debugger.
11619
11620 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11623
11624         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11625         the local register allocator from running out of registers on x86 when 
11626         using aot.
11627
11628 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11629
11630         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11631         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11632         C4146.
11633
11634         Contributed under MIT/X11 license.
11635
11636 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11639         speed up the assembler.
11640
11641 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11642
11643         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11644         support.
11645
11646         * mini.c: Move the soft float handling macros a bit earlier, add 
11647         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11648         place.
11649
11650         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11651
11652         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11653         read-only to help catch code allocation requests.
11654         
11655         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11656         and turn it off when using --aot-only or when compiling with --aot=full.
11657
11658         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11659         jump table for switches from the normal domain mempool, not the code
11660         manager.
11661
11662         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11663         unbox trampoline which handles aot-only mode too.
11664
11665         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11666         an AOTed unbox trampoline.
11667
11668         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11669
11670 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11671
11672         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11673         ""
11674
11675         Contributed under MIT/X11 license.
11676
11677 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11678
11679         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11680           the unwind information for the method at the end of the allocated block.
11681           
11682         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11683           MonoCompileArch to hold the unwind info for SEH on Winx64
11684         
11685         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11686           frame pointer info for the method being compiled.
11687           
11688         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11689           the call to mono_exception_from_token.
11690           
11691         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11692           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11693           information is stored a the end of the method block because it is all 32-bit offset based.
11694
11695         Contributed under MIT/X11 license.
11696
11697 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11698
11699         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11700
11701         * wapihandles.c: Fix warnings.
11702
11703         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11704         mode.
11705
11706         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11707         mono_jit_compile_method in aot-only mode since that calls the type 
11708         initializer.
11709         
11710         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11711         get_delegate_invoke_impl in aot-only mode.
11712
11713         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11714
11715 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11718
11719         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11720         is on by default.
11721
11722         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11723
11724         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11725         init trampoline from the AOT file as well.
11726
11727         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11728         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11729         code.
11730
11731         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11732         mono_init.
11733
11734         * exceptions-amd64.c: Add _full variants for the remaining exception code
11735         creation functions as well, allow emission of relocatable code, remove
11736         caching since that is now done by the caller.
11737
11738         * mini-exceptions.c: Add _full variants for the remaining exception code
11739         creation functions as well, add aot-only support.
11740
11741         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11742         if we can determine a proper token for them.
11743         (add_wrappers): Add a few more wrappers.
11744         (emit_method_code): Remove some dead code.
11745         (emit_trampolines): Emit exception code too.
11746
11747         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11748
11749         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11750         mono_array_new_va which avoids varargs.
11751
11752         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11753
11754         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11755         mono_arch_create_specific_trampoline () in all places.
11756
11757         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11758         a bit so it can be used for other things as well.
11759         
11760         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11761         on demand as well.
11762
11763         * exceptions-amd64.c: Rename the caching from the exception code creation
11764         functions, it is done by the caller instead.
11765         
11766         * exceptions-amd64.c: Change the signature of the exception code creation 
11767         functions to allow the creation of relocatable code later.
11768
11769         * mini-exceptions.c: Add a set of functions to query the various 
11770         runtime-generated exception functions.
11771
11772         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11773         mono_arch_.. () functions.
11774         
11775 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11776
11777         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11778
11779         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11780
11781         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11782         (mini_get_vtable_trampoline): Ditto.
11783
11784         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11785         code in the AOT case by returning the code size and a list of relocations to
11786         the caller.
11787
11788         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11789
11790 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11791
11792         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11793           clean the stack.
11794
11795         Contributed under MIT/X11 license.
11796
11797 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11798
11799         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11800         so the buffer size can be computed correctly. Fixes #404735.
11801
11802         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11803         normally as cfg->debug_info is already freed.
11804
11805 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11806
11807         * mini-amd64.c: For calls returning vtypes in registers, don't store
11808         the return address on the stack, instead allocate a separate local for
11809         it. Fixes #404729.
11810
11811 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11812
11813         * mini-trampolines.c, mini.h: Add an argument to
11814         mono_create_jit_trampoline_in_domain() for turning off the adding
11815         of the sync wrapper.
11816
11817         * mini.c: Use the JIT trampoline without sync instead of
11818         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11819         be patched.
11820
11821 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11822
11823         * driver.c: Turn on GSHARED optimization by default.
11824
11825 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11826
11827         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11828         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11829
11830         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11831         create a variant of the generic trampoline code callable from AOTed trampolines.
11832
11833         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11834         trampoline code callable from AOTed trampolines.
11835
11836         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11837
11838 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11839
11840         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11841         pass-through manner.
11842
11843         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11844         and don't fail sharing for them anymore.
11845
11846         * mini-exceptions.c: Handle exceptions in shared generic methods.
11847
11848         * generic-sharing.c: When checking the context of a generic
11849         method, also check its class's context.  Don't treat wrappers as
11850         sharable.
11851
11852         * mini-trampolines.c: Some code factored out to
11853         metadata/generic-sharing.c.  Handle the MRGCTX case.
11854
11855         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11856         we must deal with the method being of another instantiation of the
11857         class.  Add static rgctx invoke wrappers to generic methods.
11858
11859 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11860
11861         * mini.c: Provide all jit infos of generic shared methods with a
11862         generic jit info.
11863
11864         * mini-exceptions.c: Handle the new situation that a generic info
11865         might be available, but not info about the this/vtable/mrgctx
11866         variable.
11867
11868 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11869
11870         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11871         generic methods.
11872
11873 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11874
11875         * dominators.c (check_dominance_frontier): Fix a warning.
11876
11877         * mini.h: Add some missing prototypes.
11878
11879         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11880
11881         * driver.c (mono_jit_init_version): Correct the comments since the first
11882         argument should be the name of the root domain, not a filename.
11883
11884         * aot-runtime.c (make_writable): Error out if this is called while running
11885         with --aot-only.
11886         (load_aot_module): Ditto.
11887
11888         * aot-compiler.c: Really fix the computation of method indexes.
11889
11890         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11891         optimizations as this is no longer called frequently.
11892
11893         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11894         method and the invoke impl code and pass it to the delegate trampoline instead of
11895         just the delegate class.
11896
11897 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11898
11899         * aot-compiler.c: Fixup the computation of method indexes.
11900         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11901         the method builder infrastructure.
11902
11903         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11904         has no header.
11905
11906         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11907         mode, load the method right away instead of creating a trampoline.
11908
11909         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11910
11911         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11912         some checks a bit.
11913
11914 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11915
11916         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11917         (mono_aot_load_method): Use method_index instead of method->token.
11918
11919         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11920         can handle icalls etc. properly.
11921
11922         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11923
11924         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11925
11926         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11927         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11928         JIT_ICALL_ADDR patch type.
11929
11930         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11931
11932         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11933         request flag.
11934         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11935
11936         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11937
11938 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11941         domain->jit_code_hash.
11942
11943 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11946
11947 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11948
11949         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11950         get_this_arg_from_call, let it compute it when needed.
11951
11952         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11953         gsctx from code only when needed.
11954
11955         * mini-trampolines.c (get_generic_context): Rename this to 
11956         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11957         it can be called by the arch backends.
11958
11959         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11960
11961 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11962
11963         * driver.c (mono_main): Add experimental --aot-only command line option.
11964
11965         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11966         set.
11967
11968 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11969
11970         * driver.c (DllMain): Remove mono_module_handle.
11971
11972         Contributed under MIT/X11 license.
11973
11974 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11977         for emitting methods which are not in the source assembly. Detect and report
11978         failure of assembling+linking.
11979         
11980         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11981
11982         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11983
11984 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11985
11986         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11987
11988 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11989
11990         * mini.h: Remove some obsolete prototypes.
11991
11992         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11993
11994 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11995
11996         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11997         supported by Visual Studio, so use alloca().
11998
11999 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
12000
12001         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
12002         Fixes #402585.
12003
12004 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12005
12006         * mini.c: Fail sharing of a generic method if it contains an open
12007         catch clause (because we don't pass MRGCTXs yet).
12008
12009 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12010
12011         * mini.c: When compiling a method with generic sharing, insert the
12012         method instantiated with an all-Object generic context into the
12013         jit info table, instead of the context of the first instantiation
12014         of the method we happen to compile.
12015
12016 2008-06-18  Martin Baulig  <martin@ximian.com>
12017
12018         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12019         `major_version' and `minor_version'.
12020
12021 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12022
12023         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12024         mono_method_is_generic_sharable_impl() takes an additional
12025         argument specifying whether to treat type variables as reference
12026         types.
12027
12028 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12029
12030         * mini.h: Removed obsolete prototypes.
12031
12032 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12033
12034         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12035         already handle them.
12036
12037 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12038
12039         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12040         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12041         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12042         tramp-x86.c: Added a MonoGenericContext* argument to
12043         mono_arch_get_unbox_trampoline() so that it can call other
12044         functions which require it.
12045
12046 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12047
12048         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12049         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12050         mono_arch_get_this_arg_from_call() takes a
12051         MonoGenericSharingContext* as well.
12052
12053 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12054
12055         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12056         implement generic sharing of unbox.
12057
12058 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12059
12060         * mini.c: Don't compute the vtable to determine whether a field is
12061         special static, because it might not work for open types.
12062
12063 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12064
12065         * mini.c: Removed the unused token_type and token_source arguments
12066         from get_runtime_generic_context_ptr().
12067
12068 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12069
12070         * mini.c (ADD_BINOP): fix the build
12071
12072 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12075         a widening op.
12076
12077 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12078
12079         * mini.h: Removed class relations enum that's not used anymore.
12080
12081 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12082
12083         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12084
12085         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12086         the lazy fetch trampoline access code.
12087
12088 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12089
12090         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12091
12092 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12093
12094         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12095
12096         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12097
12098         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12099
12100 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12103         intrinsics.
12104
12105         * mini-ops.h: Add MIN/MAX_UN opcodes.
12106
12107         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12108         intrinsics.
12109
12110         * basic-math.cs: Add more min/max tests.
12111
12112         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12113
12114 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12115
12116         * mini.c: Small fix in the prologue of emit_castclass.
12117
12118 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12121
12122         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12123         do not work even for unsigned types. Fixes #400014.
12124
12125         * basic-math.cs: Add regression tests for unsigned Min/Max.
12126
12127 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12128
12129         * mini.c: Added additional context_used argument to several
12130         functions, which will be needed for sharing generic methods.  Use
12131         GET_RGCTX macro wherever appropriate.  Declare only one
12132         context_used in mono_method_to_ir().
12133
12134 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12135
12136         * mini.c, generic-sharing.c: Removed generic class relations.
12137
12138         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12139         functions due to MRGCTX changes.
12140
12141 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12142
12143         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12144         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12145         with calculated IMT.
12146
12147         * mini.c: Generic sharing of calls via generic interfaces.
12148
12149         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12150         generic method with non-constant MonoGenericContext*.  Instead,
12151         the context is taken out of the method itself.
12152
12153 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12154
12155         * mini.c: Generic sharing of ldvirtftn.
12156
12157 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12158
12159         * mini.c: Generic sharing of ldftn.
12160
12161 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12162
12163         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12164
12165 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12166
12167         * mini.c: Generic sharing of the special case of ldtoken followed
12168         by a call to GetTypeFromHandle.
12169
12170 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12171
12172         * mini.c: Generic sharing of box for nullable types.
12173
12174 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12175
12176         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12177         are passed on the stack. Fixes #324807.
12178
12179 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12180
12181         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12182         for the ArgValuetypeAddrInIReg case.
12183
12184         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12185         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12186
12187         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12188         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12189         local variable and pass the local variable by reference to the called method.
12190           
12191         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12192         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12193
12194         Contributed under MIT/X11 license.
12195
12196 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12197
12198         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12199
12200         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12201         everything.
12202
12203 2008-06-10  Martin Baulig  <martin@ximian.com>
12204
12205         * debug-mini.c
12206         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12207
12208 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12209
12210         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12211         possible error when no arguments are passed.
12212
12213         Contributed under MIT/X11 license.
12214
12215 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12216
12217         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12218         where the file name is NULL.
12219
12220 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12221
12222         * mini.c: Fix s390 build.
12223
12224 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12225
12226         * trace.c (mono_trace_parse_options): Fix warnings.
12227
12228         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12229
12230 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12231
12232         * mini.c (remove_block_if_useless): Avoid printing the method name.
12233         
12234         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12235         MONO_INST_NEW.
12236
12237         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12238         LMF. Not yet used.
12239
12240         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12241         translated code after it has been patched.
12242
12243 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12246         avoid problems during code patching on SMP systems.
12247         (emit_call): Avoid adding a patch info which is already added by 
12248         emit_call_body.
12249         (mono_arch_emit_exceptions): Ditto.
12250
12251 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12252
12253         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12254         MONO_TYPE_ISSTRUCT already checks for it.
12255
12256 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12257
12258         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12259           structs with floats on Winx64 the float registers are not used.  
12260           The integer registers are always used..
12261         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12262           only one register will be used and only if the size of the struct 
12263           is 1,2,4, or 8 bytes.
12264
12265         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12266           to work for Winx64.
12267
12268         Contributed under MIT/X11 license.
12269
12270 2008-06-05  Martin Baulig  <martin@ximian.com>
12271
12272         * debug-debugger.c (debugger_lookup_class): Also call
12273         mono_class_setup_methods() here; we're only called from RTI.
12274
12275 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12276
12277         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12278         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12279         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12280         Post-process object files and add dtrace-generated object, if necessary.
12281
12282         Contributed under MIT/X11 license.
12283
12284 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12285
12286         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12287         element class.
12288
12289         * mini.c: Generic sharing for unbox.any and castclass.
12290
12291 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12292
12293         * mini.c: Ignore tailcall prefix in shared generic code and when
12294         doing calls which require a vtable/rgctx argument.
12295
12296 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12297
12298         * mini.c: Don't free the JIT info.
12299
12300         * driver.c: Changes in the JIT info table testing code.
12301
12302 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12303
12304         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12305         interruption. Fix some warnings.
12306
12307         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12308         interruption_checkpoint.
12309
12310 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12311
12312         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12313         from embedding applications.
12314
12315 2008-06-02  William Holmes  <billholmes54@gmail.com>
12316
12317         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12318           reserving 32 bytes on the stack when making calls. 
12319
12320         Contributed under MIT/X11 license.
12321
12322 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12325         the linear IL branch.
12326
12327         * driver.c: Print out more information for --version on arm.
12328
12329 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12332         bb_exit instead, since out of line bblocks might not actually be emitted
12333         out-of-line.
12334         
12335         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12336         maximum epilog size for out of line bblocks if tracing is enabled.
12337
12338         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12339
12340 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12341
12342         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12343
12344 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12347         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12348         opcodes.
12349
12350 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12351
12352         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12353         the 'value' to store is a constant.
12354
12355         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12356
12357         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12358         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12359
12360 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12363         for accessing method->generic_container.
12364
12365 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12366
12367         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12368         
12369         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12370
12371         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12372
12373         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12374         fails.
12375
12376 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12377
12378         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12379
12380         * mini.c: Handle the case when mono_class_vtable () fails.
12381
12382 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12383         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12384         the stat profiler.
12385
12386 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12387
12388         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12389         together with domain sharing.
12390
12391 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12392
12393         * mini.c: Treat callvirts to final methods like non-virtual calls
12394         when doing generic sharing, i.e. look them up in the runtime
12395         generic context.
12396
12397 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12398
12399         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12400         with computed types (for generic sharing).
12401
12402         * mini.c: Generic sharing for mkrefany and refanyval.
12403
12404 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12405
12406         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12407         possible.
12408
12409         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12410         the generic sharing code.
12411         
12412         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12413         when needed.
12414
12415 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12418
12419 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12420
12421         * driver.c: updated copyright date
12422
12423 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12426         needed.
12427
12428 2008-05-19  Martin Baulig  <martin@ximian.com>
12429
12430         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12431         pointing to the new `_mono_debug_using_mono_debugger' variable.
12432
12433         * driver.c
12434         (mono_main): Check mono_debug_using_mono_debugger() rather than
12435         the `MONO_INSIDE_MDB' environment variable to check whether we're
12436         inside the debugger.
12437
12438 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12441         argument.
12442
12443 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12444
12445         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12446
12447         * mini.c: Added mini_assembly_can_skip_verification. This
12448         function checks if the assembly requested to skip verification. 
12449         Fixes part of #387274.
12450
12451 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12452
12453         * mini.c (mini_get_method): Disable the check for open generic classes when
12454         using generic sharing.
12455
12456         * generics.cs: Add a test for #387034.
12457
12458         * mini.c (mini_get_method): Check whenever the method class is an open generic
12459         type, and return NULL in that case, causing a verification error. Fixes
12460         #384123.
12461
12462 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12463
12464         * driver.c (mono_main): Revert r102623. The right
12465         thing to do is to enable the verifier under verifiable
12466         unless a --security flag was passed.
12467
12468         We need this non-trivial behavior for --verify-all otherwise
12469         mcs-compileall won't be able to use it. As it needs everything to
12470         be verified under validil.
12471
12472 2008-05-06  Martin Baulig  <martin@ximian.com>
12473
12474         Fix #383749.
12475
12476         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12477         (mono_debugger_thread_cleanup): Likewise.
12478         (mono_debugger_extended_notification): Likewise.
12479
12480 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12481
12482         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12483         against both inflated and non-inflated methods. We need to check against the
12484         generic definition for cases where the instantiated method is not visible.
12485         We need to check against the inflated types for cases where the instantiation
12486         changes any super type. This fixes #382986.
12487
12488         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12489         that check for visibiliy as generic params only appears as the type subject
12490         of tokens on call opcodes. Field manipulation and ldftn must always
12491         target an exact type.
12492
12493 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12494
12495         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12496         if no related --security flag is passed.
12497
12498 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12499
12500         * mini-arch.h: Prepare support for ppc64.
12501
12502         Contributed under MIT/X11 license.
12503
12504 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12505
12506         * aot-runtime.c: Prepare support for ppc64.
12507
12508         Contributed under MIT/X11 license.
12509
12510 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12511
12512         * mini-ops.h: Prepare support for ppc64.
12513
12514         Contributed under MIT/X11 license.
12515
12516 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12517
12518         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12519
12520         Contributed under MIT/X11 license.
12521
12522 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12525         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12526         assemblies on windows.
12527
12528 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12529
12530         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12531         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12532         * main.c: Use UTF-8 encoded command line instead of Windows default code
12533         page on Windows to support Unicode.
12534         * driver.c (DllMain): New function for mixed-mode assembly support.
12535         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12536         export __stdcall functions without decoration.
12537
12538         Contributed under MIT/X11 license.
12539
12540 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12541
12542         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12543         saving it very early.
12544
12545 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12546
12547         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12548         deleted.  The only way to access the new RGCTX is via the
12549         trampline.
12550
12551         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12552         vtable instead of the RGCTX to static methods.
12553
12554         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12555         accessing the new RGCTX.
12556
12557         * generic-sharing.c: There is no separation between self, type
12558         arguments and other types in the RGCTX anymore.
12559
12560 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12561
12562         * mini-amd64.c (add_general): Remove previous stack adjustment.
12563         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12564         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12565         for 32 bytes of stack space reserved for all calls.
12566         
12567         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12568         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12569         adjustment.
12570         
12571         Code contributed under MIT/X11 license.
12572
12573 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12574
12575         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12576         against the root definition, peeling out method and type instantiations.
12577         Cache verify success results, code that fails verification is still
12578         checked multiple times.
12579
12580 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12583
12584 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12585
12586         * mini-amd64.c (add_general): Always increment stack on Win64.
12587         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12588         on Win64.
12589         
12590         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12591         stack based argument handling on Win64.
12592         
12593         Code contributed under MIT/X11 license.
12594
12595 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12596
12597         * Makefile.am (version.h): Add support for git-svn.
12598
12599 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12600
12601         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12602         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12603         avoiding allocations and libc functions which might deadlock.
12604         
12605         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12606         'no-gdb-backtrace' option is set.
12607
12608         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12609
12610         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12611
12612 2008-04-21  Martin Baulig  <martin@ximian.com>
12613
12614         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12615         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12616
12617 2008-04-21  Martin Baulig  <martin@ximian.com>
12618
12619         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12620         `thread_vtable', `event_handler_ptr' and `event_handler'.
12621
12622 2008-04-21  Martin Baulig  <martin@ximian.com>
12623
12624         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12625         allows delayed initialization of the `executable_code_buffer' when
12626         attaching.
12627
12628 2008-04-21  Martin Baulig  <martin@ximian.com>
12629
12630         * mini.h (mono_debugger_create_notification_function): Removed.
12631         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12632
12633         * mdb-debug-info64.s
12634         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12635
12636         * mdb-debug-info32.s
12637         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12638
12639         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12640         currently only works on x86 and x86_64, so don't create it on ppc.
12641
12642 2008-04-21  Martin Baulig  <martin@ximian.com>
12643
12644         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12645
12646         * mini.c
12647         (mini_method_compile): In the fp elimination check, check
12648         `debug_options.mdb_optimizations' in addition to
12649         mono_debug_using_mono_debugger().       
12650
12651         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12652         disable some JIT optimizations which are only disabled when
12653         running inside the debugger.
12654         Added `--help-debug' option to describe the debugging options.
12655         (parse_debug_options): New static function to parse the `--debug'
12656         options, so we can easily add more stuff in future.
12657
12658 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12661         the method has no body.
12662
12663 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12664
12665         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12666         assembly is not allowed in MSVC 64-bit compiler. 
12667         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12668         as we get floating point exceptions everywhere.
12669         
12670         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12671         correctly align arguments for call to throw_exception.
12672         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12673         
12674         Code contributed under MIT/X11 license.
12675
12676 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12677
12678         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12679
12680 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12681
12682         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12683
12684         * mini-amd64.c (NEW_INS): Set cil_code.
12685
12686         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12687         from mini-amd64.c so all debugger related logic is in one place.
12688
12689         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12690         later won't have a random ip assigned to them.
12691
12692 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12695         the arch specific function initializes code_size.
12696         (mono_create_delegate_trampoline): Ditto.
12697
12698         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12699         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12700         platforms.
12701
12702         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12703         running under the debugger.
12704
12705         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12706         debugger.
12707
12708         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12709         debugger. Also move the disabling of optimizations here from driver.c.
12710         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12711         debugger.
12712
12713         * mini.h (MonoCompile): Add a few new flags.
12714
12715 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12718         so the cil_code field of created MonoInst's is properly set.
12719         (mini_select_instructions): Ditto.
12720
12721         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12722         (MONO_INST_NEW_CALL): Ditto.
12723
12724         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12725         in many places so the ins->cil_code field is properly initialized.
12726
12727         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12728         place.
12729
12730 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12731
12732         * mini.c (mini_method_compile): Print a different message when compiling a 
12733         shared method.
12734         
12735         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12736         > 1.
12737
12738 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12739
12740         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12741         SSE2 instructions.
12742
12743         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12744         
12745 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * mini.c (handle_stack_args): Make this return void since its return value was
12748         never used. Also set cfg->unverifiable for invalid IL instead of calling
12749         G_BREAKPOINT ().
12750
12751 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12752
12753         * mini.c: Make sure "this" is live in catch clauses with type
12754         variables in shared generic code.
12755
12756 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12757
12758         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12759         generic_class_is_reference_type() to ensure the proper behaviour
12760         when sharing generic code and the type in question is a type
12761         argument.
12762
12763 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12766         race conditions when printing thread dumps. Fixes #377738.
12767
12768 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12769         
12770         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12771         shows up when both MonoInst arguments can cause aliasig.
12772         There is likely no way in the current JIT to trigger this problem, but
12773         it showed up in the development of generics sharing, when in a new
12774         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12775         When the generics sharing code will be committed, its tests will be
12776         valid also for this bug.
12777
12778 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12779
12780         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12781         PATCH_INFO_METHOD.
12782
12783         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12784         NULL.
12785
12786 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12789         use a more detailed exception message for InvalidCastException.
12790
12791         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12792
12793         * driver.c (mono_main): Add --debug=casts option to turn on better 
12794         InvalidCastException message details.
12795
12796         * mini.c (mini_get_debug_options): New helper function to return the address of
12797         the debug_options variable.
12798
12799         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12800         the jit_tls TLS variable.
12801
12802         * mini.c (mono_jit_tls): New TLS variable.
12803
12804         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12805         option is used.
12806
12807 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12808
12809         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12810
12811         * mini.c: Removed verifer related stuff, code moved to verify.c.
12812
12813         * driver.c: Using code from verify.c instead of mini.c.
12814
12815 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12818         longer valid.
12819
12820 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12821
12822         * mini.c (check_for_method_verify): Enabling verification of
12823         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12824         have been fixed.
12825
12826 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12829         caller saved registers as well.
12830         
12831         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12832         saved registers as well.
12833
12834 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12837
12838         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12839         code.
12840
12841 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12844         to get_call_info.
12845         (get_call_info): Take a gsctx argument instead of 'cfg'.
12846
12847 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12850         mono_verify_all is set.
12851
12852         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12853
12854         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12855
12856 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12859         an exception.
12860
12861         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12862         verifier and the code generated by the compiler.
12863
12864 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12865
12866         * mini.c: Generic sharing of the non-nullable case of the box
12867         instruction.
12868
12869 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * inssel.brg: Fix the build.
12872
12873         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12874
12875 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12876
12877         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12878         Array:Address. Fixes #372410.
12879
12880         * iltests.il.in: New tests for readonly prefix.
12881
12882 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12883
12884         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12885         mini-trampolines.c.
12886
12887         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12888         mini-exceptions.c.
12889
12890         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12891         
12892         * mini.c (mono_decompose_op_imm): New helper function.
12893
12894         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12895         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12896         return value.
12897
12898         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12899         mono_arch_output_basic_block. Fix warnings.
12900
12901         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12902         for now.
12903
12904 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12907         since the extra frame is now detected automatically inside the loop.
12908
12909         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12910         opts which are now in mono_peephole_ins ().
12911         
12912         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12913
12914         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12915         frames and skip duplicate managed-to-native frames. Fixes #367665.
12916
12917         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12918         opts which are now in mono_peephole_ins ().
12919         (mono_arch_peephole_pass_2): Ditto.
12920
12921         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12922
12923         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12924         arch independent peephole optimizations.
12925
12926         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12927         opts which are now in mono_peephole_ins ().
12928
12929         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12930         
12931         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12932
12933         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12934         pattern.
12935
12936         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12937         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12938         opcode. 
12939
12940 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12941
12942         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12943         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12944         return value.
12945
12946         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12947         mono_arch_output_basic_block. Fix warnings.
12948
12949 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12950
12951         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12952         conv.ovf.u.un.
12953
12954 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12957         conv.ovf.u.un.
12958
12959         * iltests.il: Add new tests.
12960
12961 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12962
12963         * mini.c: Removed Windows version macros.
12964
12965 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12966
12967         * generic-sharing.c: Put reflection types in the extensible part
12968         of the runtime generic context.
12969
12970         * mini.c: Generic sharing of the GetTypeHandle special case of the
12971         ldtoken instruction.
12972
12973 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12976
12977         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12978         
12979         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12980         consistency with the other version on the linear IR branch.
12981
12982         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12983
12984         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12985
12986         * iltests.il.in: Add new tests.
12987
12988 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12989
12990         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12991
12992         * iltests.il.in: Add new tests.
12993
12994 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12995
12996         * mini.c: Two variables with the same name were declared in
12997         nesting contexts and one wasn't initialized.  Fixed.
12998
12999 2008-03-19  Mark Probst  <mark.probst@gmail.com>
13000
13001         * mini.c: Generic sharing of the initobj instruction.
13002
13003 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13004
13005         * mini.c: make the test to optimize ldtoken from typeof() more
13006         precise.
13007
13008 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13009
13010         * mini.c: Generic sharing of the initobj instruction for reference
13011         types.
13012
13013 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13016         the mono_breakpoint_clean_code() code to perform bound checks.
13017
13018 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13019
13020         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13021         mono_arch_patch_callsite() to include the start of the managed method
13022         to be able to perform bound checks.
13023
13024 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13025
13026         * mini.c: Generic sharing for the isinst instruction.
13027
13028 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13029
13030         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13031         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13032         with the runtime generic context argument.
13033
13034         * mini.c: Share calls to several types of unsharable methods by
13035         putting the address of the method code in the runtime generic
13036         context and doing an indirect call.
13037
13038         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13039         to switches.
13040
13041 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13042
13043         * generic-sharing.c: Change due to a change in the runtime genric
13044         context API.
13045
13046 2008-03-15  Martin Baulig  <martin@ximian.com>
13047
13048         * tramp-x86.c
13049         (mono_arch_nullify_class_init_trampoline): Add call to
13050         mono_breakpoint_clean_code() to make things work when running
13051         inside the debugger.
13052
13053         * tramp-amd64.c
13054         (mono_arch_nullify_class_init_trampoline): Add call to
13055         mono_breakpoint_clean_code() to make things work when running
13056         inside the debugger.
13057
13058 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13059
13060         * inssel-long.brg (reg): Fix 64 bit build.
13061
13062 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13063
13064         * mini.c, mini.h: Share static generic code by passing it an
13065         implicit argument pointing to the runtime generic context.
13066
13067         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13068         inssel-long32-mips.brg: New opcodes for calling shared static,
13069         which need to be passed the runtime generic context.
13070
13071         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13072         argument on the stack in the prologue if needed.  New function for
13073         finding the runtime generic context argument from the registers
13074         saved by the trampoline.
13075
13076         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13077         runtime generic context argument.
13078
13079         * tramp-amd64.c: Also restore the register used for the runtime
13080         generic context argument.
13081
13082         * mini-trampoline.c: Resolve shared static calls by consulting the
13083         runtime generic context via the new argument.
13084
13085         * generic-sharing.c: Add an argument to sharability-checking
13086         functions that specifies whether type variables should be treated
13087         as sharable type arguments.
13088
13089         * inssel-x86.brg: Removed a superfluous, buggy rule.
13090
13091         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13092         to switches.
13093
13094 2008-03-14  Martin Baulig  <martin@ximian.com>
13095
13096         * debug-debugger.c (main_thread_handler): Call
13097         mono_runtime_run_main() without sending any notifications.
13098
13099         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13100
13101 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13102
13103         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13104
13105 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13106
13107         * tramp-x86.c: Fixed register restore offsets in the trampoline
13108         code for ECX and EDX.
13109
13110 2008-03-12  Geoff Norton  <gnorton@novell.com>
13111
13112         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13113         different ucontext_t implementations.
13114         * exceptions-arm.c: Use the above defines to get exceptions working on 
13115         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13116         * mini-arm.c: Implement iPhone icache support (based on a patch by
13117         Luke Howard lukeh@padl.com)
13118
13119 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13120
13121         * mini.c: Enable generic sharing of calls to non-static
13122         non-interface non-generic non-value-type methods.
13123
13124         * mini-trampolines.c: Resolve calls from shared generic code.
13125
13126 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13127
13128         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13129
13130         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13131
13132 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13133
13134         * mini.c: some fixes for the AOT compiler.
13135
13136 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * cpu-amd64.md: Add clob:1 to some float opcodes.
13139
13140 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13141
13142         * mini.h: Added MiniVerifierMode enumeration.
13143
13144         * mini.c: Added mini_verifier_set_mode to control
13145         the usage of the new verifier.
13146
13147         * mini.c (mono_method): Integrated the new verifier.
13148
13149         * driver.c: Extended --security option with validil and
13150         verifiable options to activate the new verifier.
13151
13152 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13153
13154         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13155         optimization to ctors taking 0 or 2 arguments too.
13156
13157         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13158         a bit.
13159
13160         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13161
13162         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13163
13164 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13167         non-aot case as well.
13168
13169         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13170
13171         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13172         changes.
13173
13174         * aot-compiler.c (encode_patch): Ditto.
13175
13176         * mini.h (G_MININT32): Fix the definition of this.
13177
13178 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13181
13182         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13183
13184 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13185
13186         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13187         methods returning vtypes in registers.
13188         (mono_arch_allocate_vars): Ditto.
13189
13190         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13191
13192         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13193
13194         * generics.cs: Add a test from the linear IR branch.
13195
13196         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13197
13198         * mini.c (inline_method): Cache failed inline attempts.
13199
13200 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13201
13202         * mini.c: For shared methods of generic classes put the location
13203         of "this" into the MonoGenericJitInfo.
13204
13205         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13206         register out of a MonoContext by register number.  Add the generic
13207         sharing context as an argument to mono_arch_find_this_argument().
13208
13209         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13210         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13211         for new arch function.
13212
13213         * mini-exception.c: Handle open exception clauses in shared
13214         generic code.
13215
13216         * mini-trampolines.c: Supply additional argument to
13217         mono_arch_find_this_argument().
13218
13219 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * Makefile.am (regtests): Run the bench.exe tests last.
13222
13223 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13224
13225         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13226         a bit.
13227
13228 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13231         with MS.
13232
13233         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13234         
13235         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13236
13237         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13238         whose class has no cctor.
13239
13240         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13241
13242 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13243
13244         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13245         unverified.
13246
13247 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13250         to be in sync with the code on the linear IR branch.
13251
13252         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13253
13254         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13255
13256 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13257
13258         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13259
13260         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13261
13262         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13263
13264         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13265
13266         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13267         
13268         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13269         body.
13270
13271 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13272
13273         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13274         OP_LOADR4_MEMBASE emission.
13275
13276         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13277         (mono_spillvar_offset_float): Ditto.
13278
13279         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13280
13281         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13282         emission.
13283
13284         * basic-long.cs: Add regression tests for them.
13285
13286         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13287         use.
13288         (mono_arch_allocate_vars): Fix representation of single-precision float
13289         argument.
13290         (mono_arch_output_basic_block): Ditto.
13291
13292         * inssel-mips.brg: Ditto, remove duplicate items.
13293
13294         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13295         arguments of tail calls as on other platforms.
13296         (mono_arch_output_basic_block): Handle tail calls.
13297
13298         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13299         register.
13300
13301         * objects.cs (test_5_pass_static_struct): Add test for it.
13302
13303         Contributed under MIT/X11 license.
13304
13305 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * Makefile.am: Use gmcs for compiling the regression tests.
13308
13309         * *.2.cs *.2.il: Rename to *.cs and *.il.
13310
13311 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * regalloc.h: Make the vassign array smaller.
13314
13315         * mini.c (mini_method_compile): Remove an unused field in cfg.
13316
13317         * mini-codegen.c: Add a bunch of micro optimizations.
13318
13319 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * regalloc.h: Remove some unused fields.
13322
13323 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13326
13327         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13328
13329 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13330
13331         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13332
13333         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13334         trampoline: Fetch an entry from the runtime generic context.  If
13335         it's NULL, jump to the actual trampoline to fill the runtime
13336         generic context.  Otherwise, return it.
13337
13338         * mini.c: Call the lazy fetch trampoline to get entries out of the
13339         runtime generic context.
13340
13341         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13342         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13343         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13344
13345 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13346
13347         * mini.c: Fetch data out of the extensible part of the runtime
13348         generic context instead of calling a helper function.
13349
13350         * generic-sharing.c: Some functions moved into
13351         metadata/generic-sharing.c.  Helper function for fetching other
13352         types now checks and asserts against extensible rgctx (just for
13353         debugging purposes - the helper function isn't called anymore
13354         unless for debugging).
13355
13356 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13357
13358         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13359         for tail calls up to the point that the tests in iltests.exe run. Also add a
13360         dummy CKFINITE implementation.
13361         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13362         needed for trampoline LMF frames.
13363
13364         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13365         trampoline LMF frames.
13366
13367 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13368
13369         * mini.c (inline_method): clean any pending loader error when inlining fail.
13370         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13371
13372 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13375
13376         * aot-runtime.c (decode_patch_info): Ditto.
13377
13378         * mini.c (mono_resolve_patch_target): Ditto.
13379         
13380         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13381         icall wrappers.
13382
13383         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13384         
13385         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13386         if it references an icall address.
13387
13388 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * cpu-s390x.md: Remove some more unused opcodes.
13391         
13392         * cpu-s390x.md: Remove some unused opcodes.
13393
13394         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13395         mono_op_imm_to_op ().
13396
13397         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13398         instead of a switch statement.
13399         
13400         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13401         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13402
13403         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13404         
13405         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13406
13407         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13408         -1.
13409
13410 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13413         opened. Fixes #362607.
13414
13415         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13416
13417         * iltests.il.in: Add a test for static methods in interfaces.
13418
13419 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13420
13421         * genmdesc.c (build_table): Fix a crash on older glib versions.
13422
13423         * cpu-sparc.md: Remove some unused opcodes.
13424         
13425         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13426         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13427
13428         * cpu-amd64.md: Remove some unused opcodes.
13429
13430         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13431         like the other opcodes.
13432
13433 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13434
13435         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13436
13437         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13438
13439         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13440         variables 'cfg' instead of 'm' for consistency.
13441
13442         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13443
13444         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13445         argument holding the vtype return address, to avoid the ambigious use of
13446         cfg->ret for this purpose.
13447
13448         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13449
13450         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13451         
13452         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13453         new mono_print_ins () function which only takes one argument.
13454
13455 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13458         macro arguments.
13459
13460 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13463
13464         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13465
13466         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13467         opcodes and other small changes.
13468
13469         * mini-ops.h: Add some new opcodes from the linear IR branch.
13470
13471         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13472
13473         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13474         opcodes, use the REG_MEMBASE opcodes instead.
13475         
13476         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13477         opcodes, use the REG_MEMBASE opcodes instead.
13478         
13479         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13480         linear IR branch.
13481
13482         * mini.c (mono_op_imm_to_op): New helper function.
13483
13484         * mini-ops.h: Add some opcodes from linear IR branch.
13485
13486 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13487
13488         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13489         <tsv@solvo.ru>.
13490
13491 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13492
13493         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13494         OP_ICONV_TO_R4/R8.
13495
13496         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13497
13498 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * aot-compiler.c (emit_method_code): Add an assert.
13501
13502         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13503         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13504         methods.
13505
13506 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13509         some load/store opcodes so they are consistent. 
13510         (mono_arch_emit_prolog): Simplify some code.
13511
13512         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13513
13514         * objects.cs: Add tests for large argument offsets on ARM.
13515
13516         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13517         stack offsets. Fixes #359651.
13518
13519         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13520
13521         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13522
13523         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13524
13525         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13526
13527         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13528
13529         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13530         rid of CEE_CONV_R_UN.
13531
13532         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13533
13534 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13535
13536         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13537
13538         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13539
13540         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13541
13542         * cpu-amd64.md: Remove some unused opcodes.
13543
13544         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13545
13546         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13547
13548         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13549         arch specific functions for its parts. Call the peephole pass after local
13550         regalloc so the prolog can compute a more accurate max_offset.
13551         
13552         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13553         the corresponding OP_I/OP_L opcodes.
13554
13555         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13556
13557         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13558
13559 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13562         as they are handled in mini.c.
13563
13564         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13565         
13566         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13567         case since it is handled in mini.c.
13568
13569         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13570
13571         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13572
13573         * *.c: Use the new opcodes in the IR and back end code.
13574
13575         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13576
13577         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13578
13579 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13580
13581         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13582         an assert because it has a race condition.
13583
13584 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13587
13588         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13589
13590         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13591
13592         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13593         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13594
13595 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13596
13597         * cpu-amd64.md (move): Correct the maximum size of move.
13598
13599 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13600
13601         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13602         the generic class init trampoline to return quickly if the class
13603         is already inited.
13604
13605 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13606
13607         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13608         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13609
13610 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13611
13612         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13613         branch.
13614
13615 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13616
13617         * objects.cs: Add some soft-float tests.
13618
13619         * mini.c: Fix a couple more soft-float issues.
13620
13621         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13622
13623         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13624         avoid a REX prefix.
13625
13626 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13629         exception happens while compiling a virtual method.
13630
13631 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13634         
13635         * mini-sparc.c: Fix build.
13636
13637         * mini-sparc.c (get_call_info): Add support for generic sharing.
13638
13639         * mini-exceptions.c: Add a FIXME.
13640
13641 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13644         altstack handling code.
13645
13646         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13647         
13648         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13649
13650         * mini-s390.c: Add support for generic sharing.
13651
13652         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13653         Fix CAS on s390.
13654         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13655
13656         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13657
13658         * mini-s390x.c: Add support for generic sharing.
13659         
13660         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13661         Fix CAS on ia64.
13662         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13663
13664         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13665         can be used since it takes a 16 bit signed immediate.
13666
13667         * inssel-s390x.brg: Fix OP_SETRET.
13668
13669         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13670
13671         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13672
13673         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13674
13675         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13676
13677         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13678         in one place.
13679
13680         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13681         stuff.
13682
13683         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13684         of the unused mono_arch_patch_delegate_trampoline stuff.
13685
13686 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * basic-long.cs: Move the fp related tests to basic-float.cs.
13689
13690         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13691
13692         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13693
13694         * basic-calls.cs: Add a test for proper float argument passing.
13695
13696         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13697         if the context corresponds to an exception received through a signal.
13698
13699         * exceptions.cs: Add a test for nullref handling at the start of a try
13700         clause.
13701
13702         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13703
13704         * jit-icalls.c (mono_break): New JIT icall.
13705
13706         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13707
13708         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13709
13710 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * cpu-*.md: Get rid of unused opcodes.
13713
13714         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13715
13716         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13717         by all platforms.
13718
13719         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13720         define.
13721
13722         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13723         the arch independent trampoline code in mini-trampolines.c.
13724
13725         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13726
13727         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13728
13729         * mini-s390.h: Remove an unused define.
13730         
13731         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13732         the arch independent trampoline code in mini-trampolines.c.
13733
13734         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13735
13736 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13739
13740         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13741
13742         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13743
13744         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13745
13746         * cpu-amd64.md: Use smaller sizes for int opcodes.
13747
13748         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13749
13750         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13751         objects.cs.
13752
13753         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13754         debugging.
13755
13756         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13757         instead of though a pointer to save an indirection when accessing elements of
13758         the array.
13759
13760         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13761         some typos.
13762         (NOT_IMPLEMENTED): New helper macro.
13763         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13764         of a bb.
13765
13766         * *.c: Use the new helper macro.
13767
13768 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13771
13772 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13775         stack slots.
13776
13777 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13780         profiling is enabled.
13781         
13782         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13783         the end.
13784         (mono_arch_emit_prolog): Add more first bblock optimizations.
13785
13786         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13787         in order if possible.
13788         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13789         bblock, since the arguments are still in their original registers.
13790
13791         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13792
13793 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13796         as well.
13797
13798         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13799         offset 0.
13800
13801         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13802
13803         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13804         process async exceptions received while in unmanaged code.
13805
13806         * mini.c (mini_init): Install a callback with the runtime which will be called
13807         when a thread receives an async exception while in unmanaged code.
13808
13809         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13810
13811         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13812
13813 2008-01-16  Wade Berrier  <wberrier@novell.com>
13814
13815         * cpu-g4.md:
13816         * cpu-arm.md:
13817         * cpu-s390x.md:
13818         fix build
13819
13820 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13821
13822         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13823         compilation with sun cc.
13824
13825         * cpu-*.md: Fix the build.
13826
13827         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13828
13829         * mini-amd64.h: Add some comments to the MonoLMF structure.
13830
13831         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13832         
13833         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13834         in the LMF structure if possible. This saves two instructions in the
13835         managed->native wrappers.
13836
13837         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13838
13839 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13840
13841         * generic-sharing.c: New type argument lookup code which uses the
13842         runtime generic context template.
13843
13844 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13847
13848         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13849         (mono_arch_output_basic_block): Fix localloc implementation.
13850
13851         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13852
13853         * mini-ia64.c (peephole_pass): Fix ia64 build.
13854
13855         * mini-amd64.c (peephole_pass): Fix a warning.
13856         
13857         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13858         at a constant offset from sp/fp.
13859
13860         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13861         instead of obtaining it from *lmf in the managed method case.
13862
13863 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13866
13867 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13868
13869         * mini.h (MonoInstList): New type.
13870         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13871         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13872         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13873         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13874         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13875         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13876         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13877         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13878         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13879         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13880         MONO_INST_LIST_FOR_EACH_ENTRY,
13881         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13882         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13883         mono_inst_list_first, mono_inst_list_last,
13884         mono_inst_list_next, mono_inst_list_prev): New instruction
13885         list handling interfaces.
13886         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13887         list head 'ins_list'.
13888         (MonoInst): Replace next pointer with list head 'node'.
13889         (MonoCallInst): Make 'out_args' a MonoInstList.
13890         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13891         (MonoCompile): Delete reverse_inst_list and
13892         reverse_inst_list_len.
13893         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13894         mono_arch_lowering_pass, mono_arch_local_regalloc,
13895         mono_arch_output_basic_block, mono_arch_emit_prolog):
13896         Convert to new instruction lists.
13897         (insert_after_ins): Delete.
13898         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13899         instruction lists.
13900         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13901         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13902         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13903         mono_emulate_opcode, mono_emit_load_got_addr,
13904         inline_method, mono_method_to_ir, mono_print_bb_code,
13905         print_dfn, decompose_pass, nullify_basic_block,
13906         replace_out_block_in_code, remove_block_if_useless,
13907         merge_basic_blocks, move_basic_block_to_end,
13908         try_unsigned_compare, optimize_branches, mono_print_code,
13909         mini_select_instructions, remove_critical_edges): Likewise.
13910         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13911         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13912         mono_arch_output_basic_block, mono_arch_emit_prolog):
13913         Likewise.
13914         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13915         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13916         mono_arch_output_basic_block): Likewise.
13917         (inst_list_prepend, insert_after_ins): Delete.
13918         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13919         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13920         instruction lists.
13921         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13922         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13923         mono_arch_emit_prolog): Likewise.
13924         * cfold.c (mono_constant_fold): Likewise.
13925         * liveness.c (visit_bb, mono_analyze_liveness,
13926         optimize_initlocals): Likewise.
13927         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13928         * graph.c (mono_draw_code_cfg): Likewise.
13929         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13930         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13931         mono_ssa_cprop): Likewise.
13932         * abcremoval (get_relations_from_previous_bb, process_block):
13933         Likewise.
13934         * local-propagation (mono_cprop_invalidate_values,
13935         mono_local_cprop_bb): Likewise.
13936         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13937         peephole_pass, mono_arch_output_basic_block,
13938         mono_arch_emit_prolog): Likewise.
13939         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13940         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13941         mono_arch_emit_prolog): Likewise.
13942         (insert_after_ins): Delete.
13943         * aliasing.c (print_code_with_aliasing_information,
13944         mono_build_aliasing_information, mono_aliasing_deadce):
13945         Convert to new instruction lists.
13946         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13947         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13948         mono_arch_local_regalloc, mono_arch_output_basic_block):
13949         Likewise.
13950         (insert_after_ins): Delete.
13951         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13952         peephole_pass, mono_arch_output_basic_block): Convert to
13953         new instruction lists.
13954         * mini-codegen (InstList, inst_list_prepend,
13955         insert_after_ins): Delete.
13956         (insert_before_ins, get_register_force_spilling,
13957         get_register_spilling, free_up_ireg, free_up_reg,
13958         create_copy_ins, create_spilled_store, alloc_int_reg,
13959         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13960         to new instruction lists.
13961         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13962         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13963         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13964         (insert_after_ins): Delete.
13965         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13966         mono_arch_local_regalloc, mono_arch_output_basic_block,
13967         mono_arch_call_opcode): Convert to new instruction lists.
13968         (insert_after_ins): Delete.
13969         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13970         peephole_pass, mono_arch_output_basic_block,
13971         mono_arch_emit_prolog): Convert to new instruction lists.
13972
13973 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13976
13977         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13978         Fixes #353182.
13979
13980         * Makefile.am (version.h): Make this work with non-bash shells.
13981
13982 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13983
13984         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13985
13986 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13989         the InitializeArray optimization.
13990
13991 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13992
13993         * mini.c driver.c: Don't include os/gc_wrapper.h.
13994
13995 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * mini.c (print_jit_stats): Print GC statistics if available.
13998
13999 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
14000
14001         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
14002
14003 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14004
14005         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14006
14007 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14008
14009         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14010         
14011         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14012
14013         * driver.c (mono_main): Ditto.
14014
14015 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14018
14019         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14020         in the vtable can't be encoded.
14021         (compile_method): Ditto.
14022
14023 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14026         defined.
14027
14028         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14029         lmf->rbp.
14030
14031         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14032         the top LMF entry belongs to the current method.
14033
14034         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14035
14036 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14039         
14040         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14041
14042         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14043
14044         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14045
14046         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14047
14048         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14049         implementation.
14050
14051         * basic-float.cs: Add an ulong->double cast test.
14052
14053 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * mini.c (mono_method_to_ir): Fix a warning.
14056
14057 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * mini-ops.h: Add OP_SWITCH.
14060
14061         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14062         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14063
14064 2007-12-11  Geoff Norton  <gnorton@novell.com>
14065
14066         * mini-s390x.c: Minor change to the MAX() define to allow
14067         it to compile with other gcc versions.
14068
14069 2007-12-11  Geoff Norton  <gnorton@novell.com>
14070
14071         * cpu-s390x.md:
14072         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14073
14074 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14075
14076         exceptions-arm.c (mono_arch_get_restore_context): Restore
14077         the frame pointer.
14078
14079         exceptions-arm.c (throw_exception): Save the frame pointer.
14080         This is a partial fix for #323747. Only the client side is
14081         fixed.
14082
14083 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14084
14085         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14086         was using an unrelated variable to log the class which
14087         needed the cctor to be called. This was crashing on arm.
14088
14089 2007-12-09  Robert Jordan  <robertj@gmx.net>
14090
14091         * mini-x86.c (mono_arch_emit_epilog):
14092         Consider all kinds of 64-bit types. Fixes #323114.
14093
14094 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14095
14096         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14097
14098 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14099
14100         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14101
14102 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14103
14104         * mini.c: run type ctor before allocating an object, not only
14105         when running it's constructor method (fixes at least part of bug #342507).
14106
14107 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14108         
14109         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14110         
14111         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14112         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14113         function.
14114
14115         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14116         mono_generic_class_init_trampoline () the same as it is done with the other
14117         trampolines.
14118
14119         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14120         aot-runtime.c aot-compiler.c: Implement AOT support.    
14121
14122 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14123
14124         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14125         build for archs which don't have the vtable trampoline defined
14126         yet.
14127
14128 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14129
14130         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14131
14132         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14133
14134         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14135
14136         * tramp-<ARCH>.c: Use the new helper function.
14137
14138 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14139
14140         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14141         trampoline call, which takes a vtable argument.
14142
14143         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14144         OP_TRAMPCALL_VTABLEs like other calls.
14145
14146         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14147         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14148         call.  Implemented a support function which fetches the vtable
14149         from a register set.
14150
14151         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14152         Implemented a generic class init trampoline, using the
14153         OP_TRAMPCALL_VTABLE opcode.
14154
14155         * mini.c: Implemented static field access when sharing generic
14156         code.  This implies initing the class using the new
14157         OP_TRAMPCALL_VTABLE call.
14158
14159 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14160
14161         * mini.c: Don't compile methods with sharing enabled if their
14162         classes are disabled for sharing.
14163
14164 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14165
14166         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14167         opcodes. Fixes #346563.
14168
14169         * objects.cs: Add a new test.
14170
14171         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14172
14173         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14174         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14175
14176 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14179
14180 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14183         code stream.
14184
14185 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14188
14189         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14190         optimization in the AOT case.
14191         
14192 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14195         
14196         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14197
14198         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14199
14200         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14201
14202         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14203         is created by the inlined delegate ctor.
14204
14205         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14206
14207         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14208
14209 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14210
14211         * cpu-x86.md: Fix the length of ckfinite.
14212
14213 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14214
14215         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14216         
14217         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14218         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14219
14220         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14221
14222         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14223         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14224
14225 2007-11-28  Martin Baulig  <martin@ximian.com>
14226
14227         * mini-x86.c
14228         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14229         after creating the trampoline.
14230
14231 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14232
14233         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14234
14235         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14236         the same version.
14237
14238         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14239         instead of the calling method to help AOT.
14240
14241         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14242
14243 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14244
14245         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14246         is defined.
14247
14248 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14249
14250         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14251         
14252         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14253         (encode_method_ref): No need to handle generic method definitions specially.
14254
14255         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14256
14257         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14258         decode_klass_info.
14259
14260         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14261         encode_klass_info.
14262         (compile_method): Enable generic sharing.
14263
14264 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14265
14266         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14267         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14268
14269         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14270         generic code.
14271
14272         * mini-trampolines.c: Fix a warning.
14273
14274         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14275         NEW_PCONST.
14276         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14277         (generic_class_is_reference_type): Remove unused function.
14278
14279         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14280         in the generic vtable trampoline case.
14281
14282         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14283         
14284         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14285         return an AOT method based on a vtable slot.
14286
14287         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14288
14289         * mini.c (mini_get_vtable_trampoline): Export this.
14290
14291 2007-11-22  Martin Baulig  <martin@ximian.com>
14292
14293         * debug-debugger.h
14294         (MonoDebuggerInfo): Move `debugger_version' up.
14295
14296 2007-11-22  Martin Baulig  <martin@ximian.com>
14297
14298         * mini-amd64.c
14299         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14300
14301         * mini-trampolines.c
14302         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14303         after compiling the method.
14304
14305 2007-11-20  Martin Baulig  <martin@ximian.com>
14306
14307         * debug-mini.c
14308         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14309         (mono_debugger_remove_breakpoint): Likewise.
14310         (mono_debugger_check_breakpoints): Likewise.
14311
14312         * debug-debugger.c: Implement the new breakpoint interface here.
14313
14314 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14317         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14318
14319         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14320
14321 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14322
14323         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14324
14325         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14326         mini.c.
14327
14328         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14329         mini.c.
14330
14331         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14332         returning a vtype in a register.
14333
14334         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14335         here from the arch specific code.
14336
14337         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14338         mini.c.
14339
14340         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14341         (mono_arch_emit_prolog): Increment maximum prolog size.
14342
14343         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14344         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14345
14346         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14347         MonoGenericSharingContext.
14348
14349         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14350         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14351
14352 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14353
14354         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14355         which extract fields out of the runtime generic context.  Full
14356         sharing of the NEWARR opcode.
14357
14358 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14359
14360         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14361         --enable-minimal=ssa.
14362
14363 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14364
14365         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14366         mono_marshal_get_delegate_invoke () signature change.
14367
14368 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14369
14370         * mini.c: Removed the shared context in favor of the generic
14371         sharing context.  Allocate the MonoJitInfo structure with room for
14372         the generic sharing context if it's needed.
14373
14374         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14375         domain-internals.h now.
14376
14377         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14378
14379         * generic-sharing.c: Several changes for working without a shared
14380         context and instead operating on open types instead.
14381
14382 2007-11-12  David S. Miller  <davem@davemloft.net>
14383
14384        * inssel-sparc.brg: Fix double instruction emit.
14385
14386 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14387
14388         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14389         Get/Set/Address methods.
14390         
14391         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14392         mono_marshal_get_delegate_invoke signature change.
14393
14394 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14395
14396         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14397         This can happens with dynamic methods. Fixes the other bug in #322722.
14398
14399 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14400
14401         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14402         BX call sequence.
14403
14404         * mini-arm.c (arm_patch): Implement patching of BX call
14405         sequence. Fixes one of the bugs in #322722.
14406
14407 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14408
14409        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14410        under Linux.  We only need to flush every 32-byte cache line.    
14411
14412 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14413
14414         * mini.c:
14415         move_basic_block_to_end: Add branches when needed, eventually creating
14416         a new BB.
14417         optimize_branches: added a parameter that tells if it's ok to create
14418         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14419         and avoid calling move_basic_block_to_end when it's not ok.
14420         Fixes bug 318677.
14421
14422 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14423
14424         * mini.c: Abort inlining call to InitializeArray if something
14425         looks wrong.  Let the icall handle it, which now has proper safety
14426         checks.
14427
14428 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14429
14430         * mini.c (mono_spill_call): add support for soft-float.
14431
14432         * mini.c (mono_method_to_ir): add support for soft-float
14433         to inlined functions that return float.
14434
14435         * mini.c (mono_method_to_ir): add support for soft-float
14436         to cee_stsfld opcode on float fields.
14437
14438 2007-11-05  Geoff Norton  <gnorton@novell.com>
14439
14440         * mini-x86.h: Fix the structure access for X86 Leopard.
14441
14442
14443 2007-11-05  Martin Baulig  <martin@ximian.com>
14444
14445         * mini-trampolines.c
14446         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14447         after compiling the method to notify the debugger.
14448
14449 2007-11-05  Martin Baulig  <martin@ximian.com>
14450
14451         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14452
14453 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14456         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14457
14458 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14459
14460         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14461         native-to-managed wrappers.
14462         
14463 2007-11-01  Geoff Norton  <gnorton@novell.com>
14464
14465         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14466         members.
14467
14468 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14469
14470         * mini.c, mini-x86.c: when getting back from unmanaged code
14471         to managed via a marshaled delegate we also need to set the
14472         right domain.
14473
14474 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14475
14476         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14477         for amd64.
14478
14479 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14480
14481         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14482         let the debugger or other external agents to tell the JIT when
14483         a sw breakpoint has been inserted in the code that the JIT needs
14484         to be able to inspect.
14485
14486 2007-10-31  Martin Baulig  <martin@ximian.com>
14487
14488         * debug-debugger.h
14489         (MonoDebuggerInfo): Remove `runtime_class_init'.
14490
14491 2007-10-30  Martin Baulig  <martin@ximian.com>
14492
14493         * debug-mini.h
14494         (mono_debugger_thread_created): Added `MonoThread *' argument.
14495         (mono_debugger_extended_notification): New public method.
14496         (mono_debugger_trampoline_compiled): New public method.
14497
14498         * debug-mini.c
14499         (MonoDebuggerThreadInfo): Added `thread' and
14500         `extended_notifications' fields.
14501
14502         * debug-debugger.c
14503         (debugger_executable_code_buffer): New static variable.
14504
14505         * debug-debugger.h
14506         (MonoDebuggerInfo): Added `executable_code_buffer',
14507         `executable_code_buffer_size', `breakpoint_info_area',
14508         `breakpoint_table' and `breakpoint_table_size'.
14509
14510 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14511
14512         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14513         that IP  either is an unused value or the vtable pointer. IMT 
14514         calls use vtable + offset now. Reduced by almost half the size
14515         of IMT entries.
14516
14517 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14518
14519         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14520         defines to access param registers. Replace long usage with
14521         gsize as sizeof(long) != sizeof(void*) on Win64.
14522
14523         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14524         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14525         instead of non-existant _GetAddressOfReturnAddress.
14526
14527         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14528         param registers. Save/restore %rdi and %rsi in MonoLMF.
14529
14530         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14531         param registers. Modify (throw_exception) signature to take 
14532         %rdi and %rsi on Win64. 
14533
14534         Code is contributed under MIT/X11 license.
14535
14536 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14537
14538         * helpers.c: unlink debugging output files.
14539
14540 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14541
14542         * mini.c: Move mono_create_ftnptr () to object.c.
14543
14544 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14545
14546         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14547         optional. This function can now be used to disassemble code generated
14548         outside the JIT such as trampolines and IMT thunks.
14549
14550         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14551
14552         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14553         vtable pointer from a ldr instruction.
14554
14555         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14556         new IMT call sequence.
14557
14558         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14559         call sequence for interface invocations.
14560
14561         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14562         for imt support. This function is empty since IMT on ARM requires no
14563         special handling on the IR side.
14564
14565         * mini-arm.c (mono_arch_find_imt_method): added, required for
14566         imt support.
14567
14568         * mini-arm.c (mono_arch_find_this_argument): added, required
14569         for imt support.
14570
14571         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14572         a ldr instruction to load a value stored in the code stream.
14573
14574         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14575         for imt support.
14576
14577
14578 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini.c (mini_init): Install the jump trampoline callback.
14581
14582 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14583
14584         * mini-trampolines.c: handle synchronized methods with the common
14585         vtable trampoline (bug #335601).
14586
14587 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14588
14589         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14590
14591         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14592         64 bit platforms.
14593
14594         * mini-ia64.h mini-ia64.c: Add support for IMT.
14595
14596         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14597         prolog. Fixes #331958.
14598
14599 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14602
14603 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14606         trampoline.
14607
14608 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14609
14610         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14611         trampoline.
14612
14613 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14614
14615         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14616         trampoline.
14617
14618 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14619
14620         * mini-trampolines.c: changed the magic rampoline to understand
14621         the common vtable trampoline method: the method to invoke is
14622         determined by the vtable displacement of the call.
14623
14624 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini.c, mini.h: register the common vtable trampoline if the
14627         architecture supports it.
14628
14629 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * cpu-amd64.md: use the correct max length for tls_get.
14632
14633 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14634
14635         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14636         CEE_STELEM_ANY. Fixes #333696.
14637
14638 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14639
14640         * exceptions-x86.c: provide more graceful handling of the case where
14641         we followed a bogus function pointer from managed code (bug #332866).
14642
14643 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14644
14645         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14646         replaces the generic_shared flag and will carry more information
14647         in the future.
14648
14649         * generic-sharing.c: Added mini_type_stack_size() which allows
14650         allows open types if given a generic sharing context.
14651         mini_get_basic_type_from_generic() takes a
14652         MonoGenericSharingContext* instead of a MonoCompile* now.
14653
14654         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14655         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14656         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14657         changes above.  Just passing arguments through to the right
14658         places.
14659
14660 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14661
14662         * mini-arm.c: unify the call emission to emit_code_seq().
14663
14664 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14665
14666         * tramp-arm.c: reduced the trampoline size.
14667
14668 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14669
14670         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14671         variable handling out of arch-specific code.
14672
14673 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14674
14675         * mini-arm.c: implemented fast delegate dispatch.
14676
14677 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14678
14679         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14680         that fp elimination is turned off if the space required by locals is too
14681         big. Fixes #331958.
14682
14683 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14686         ARM to the new style trampoline.
14687
14688 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14689
14690         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14691
14692         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14693
14694 2007-10-09  Martin Baulig  <martin@ximian.com>
14695
14696         * debug-debugger.h
14697         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14698         `field_info_offset_offset'.     
14699
14700 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14701
14702         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14703         removed more internal usage of the r11 register and made it available
14704         to the register allocator.
14705
14706 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14707
14708         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14709         when sharing generics and treat type variables as references.
14710
14711 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14712
14713         * mini-ppc.c: started removing the internal uses of register r11
14714         to eventually allow the register allocator to manage it as an
14715         additional available register.
14716
14717 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14718
14719         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14720
14721 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14722
14723         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14724         specific trampolines as they are not performance critical as a jump
14725         target (maybe align as before only for AOT code?). This saves about
14726         200 KB of native code on x86 for monodevelop startup.
14727
14728 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14729
14730         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14731         monodevelop startup.
14732
14733 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14734
14735         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14736
14737         * mini-sparc.h mini-sparc.c: Implement IMT support.
14738
14739         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14740         its smaller and doesn't clobber sparc_g1.
14741
14742         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14743
14744 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14745
14746         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14747
14748 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14749
14750         * mini-ppc.c: implemented fast delegate invocation.
14751
14752 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14753
14754         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14755
14756 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14757
14758         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14759         code to the new style trampoline in preparation for IMT support.
14760
14761 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14762
14763         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14764         systems already. This also reduces the specific trampiline sizes and
14765         prepares for the use of r12 as the IMT identifier register.
14766
14767 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14768
14769         * mini-mips.h: endianess fix (simplified from a patch by
14770         Thomas Kunze <thommy@tabao.de>, bug #323737).
14771
14772 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14773
14774         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14775         to access ucontext fields and enable netbsd support
14776         (partially from Magnus Henoch <mange@freemail.hu>).
14777
14778 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14779
14780         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14781         use the preprocessor from the CPP env var if it is set.
14782
14783 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14784
14785         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14786         code, before interface_offset gets used.
14787
14788 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14789
14790         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14791         mono_class_setup_vtable () before accessing klass->vtable.
14792
14793 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14796         hackish.
14797
14798 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14799
14800         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14801         IMT slots (this saves hundreds of KB of memory in programs like
14802         IronPython and Monodevelop).
14803
14804 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14805
14806         * mini.c: print the delegate counter.
14807
14808 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14809
14810         * mini-x86.c: make it easier to enable the debugging code for IMT
14811         slots.
14812
14813 2007-09-28  Martin Baulig  <martin@ximian.com>
14814
14815         * debug-debugger.h
14816         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14817         `mono_method_klass_offset' and `mono_method_token_offset'.
14818
14819 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14820
14821         * mini.c: First generics sharing implementation.  Can only share
14822         in very simple cases.  If sharing doesn't work it falls back to
14823         dedicated compilation.
14824
14825         * mini.h: Flag in MonoCompile to specify whether generic
14826         compilation is shared.  Flags enum for marking which generic inst
14827         of a context is used.  Prototypes for helper functions.
14828
14829         * generic-sharing.c: Helper functions for generic method sharing.
14830
14831         * optflags-def.h: Optimization flag (gshared) for enabling generic
14832         method sharing added.
14833
14834         * Makefile.am: generic-sharing.c added.
14835
14836 2007-09-19 Daniel Nauck <dna@mono-project.de>
14837
14838         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14839
14840 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14841         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14842         fixes bug 325507.
14843
14844 2007-09-19  Martin Baulig  <martin@ximian.com>
14845
14846         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14847         mono_debug_cleanup() is now part of mono_cleanup().
14848
14849 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14850
14851         * driver.c (mono_main): Fix a warning.
14852
14853 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14854
14855         * aot-compiler.c: Optimize various parts when processing large assemblies.
14856         Fixes ##325568.
14857
14858         * mini.c (mono_patch_info_hash): Improve hash function.
14859
14860 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14861
14862         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14863         
14864         Code is contributed under MIT/X11 license.
14865
14866 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14867
14868         * mini.c (mini_init): Fix a leak.
14869
14870         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14871
14872 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14873
14874         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14875
14876 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14877
14878         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14879
14880 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14881
14882         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14883         variance tests.
14884
14885         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14886
14887         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14888
14889         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14890
14891         * aot-runtime.c (decode_patch_info): Ditto.
14892
14893 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14894
14895         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14896         static case. Cache delegates in architecture specific code, 
14897         based on number of parameters.
14898         
14899         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14900         in architecture specific code, based on number of parameters.
14901         
14902         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14903         caching happen in architecture specific code now.
14904         
14905         Code is contributed under MIT/X11 license.
14906
14907 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14908
14909         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14910         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14911         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14912
14913         Code is contributed under MIT/X11 license.
14914
14915 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14916         * mini.c: (mono_thread_abort) Fixed bug #82416.
14917
14918 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14919
14920         * mini.: hook the new managed GC allocation feature into the JIT.
14921
14922 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14923
14924         * mini.c: implementation for the new runtime tls opcode.
14925
14926 2007-09-11  Martin Baulig  <martin@ximian.com>
14927
14928         * debug-debugger.h
14929         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14930         `mono_method_inflated_offset'.
14931
14932 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14933
14934         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14935         async exceptions into a method.
14936
14937         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14938         purpose of testing whenever the unwinder works at every instruction.
14939
14940 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14941
14942         * mini.c: check accessibility of method used in ldftn (fixes
14943         bug #82635).
14944
14945 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14946
14947         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14948
14949         * inssel.brg: Fix a warning.
14950
14951 2007-09-03  Martin Baulig  <martin@ximian.com>
14952
14953         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14954         now takes the `main_method' as argument.
14955
14956 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14957
14958         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14959
14960 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14961
14962         * driver.c: include the cil-coff.h header on Windows.
14963         
14964         Code is contributed under MIT/X11 license.
14965
14966 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14967
14968         * mini.c, driver.c: don't include the cil-coff.h header.
14969
14970 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14971
14972         * mini.c: flag places that needs fixes fo soft-float support.
14973
14974 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14975
14976         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14977         endian systems (partially from Dean Jenkins, bug #81924).
14978
14979 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14980
14981         * mini.c (check_linkdemand): Remove embedded reference object in
14982         call to LinkDemandSecurityException.
14983         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14984         with an IntPtr instead of a reference object.
14985
14986 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14987
14988         * mini.c (handle_initobj): Handle alignment properly.
14989
14990         * inssel.brg (mini_emit_memset): Ditto. 
14991
14992         * inssel.brg (mini_emit_memcpy): Ditto. 
14993
14994         * inssel-sparc.brg: Ditto.              
14995
14996         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14997
14998 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14999
15000         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
15001         exceptions raised in unmanaged code. Fixes part of #82594.
15002
15003 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15004
15005         * mini.c (mono_method_to_ir), declsec.c
15006         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15007
15008 2007-08-22  Martin Baulig  <martin@ximian.com>
15009
15010         * debug-mini.h
15011         (MonoDebuggerThreadInfo): New typedef.
15012         (mono_debugger_thread_table): New global variable.
15013         (mono_debugger_thread_created): New public function.
15014         (mono_debugger_thread_cleanup): New public function.
15015
15016         * debug-debugger.h
15017         (MonoDebuggerInfo):
15018         - removed `get_current_thread' and `lookup_assembly'.
15019         - removed `data_table'.
15020         - added `thread_table'.
15021
15022         * mini.c
15023         (mono_thread_start_cb): Call mono_debugger_thread_created().
15024         (mono_thread_attach_cb): Likewise.
15025         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15026         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15027         initial domain.
15028
15029         * driver.c (mono_main): Move mono_debug_init() up, before calling
15030         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15031
15032 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15035         together when passing several arguments of type double (gives a small
15036         speedup and saves a few bytes of generated code).
15037
15038 2007-08-20  Jb Evain  <jbevain@novell.com>
15039
15040         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15041
15042 2007-08-20  Jb Evain  <jbevain@novell.com>
15043
15044         * mini.c (mono_method_to_ir): throw MethodAccessException
15045         and FieldAccessException instead of InvalidProgramException.
15046
15047 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15048
15049         * mini.c: CoreCLR security checks.
15050
15051         * mini.h: Removed MonoSecurityMode (moved to
15052         metadata/security-manager.h) and mono_security_mode global var
15053         (replaced by set/get functions in security-manager.h).
15054
15055         * driver.c: Added "core-clr-test" security mode for testing.  Used
15056         set-function for setting security mode.
15057
15058 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15059
15060         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15061         the new jit_info_table.
15062
15063         * driver.c: Test code for the new jit_info_table (enabled by the
15064         define MONO_JIT_INFO_TABLE_TEST).
15065
15066 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15067
15068         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15069         detection of call <REG> instruction sequence. Fixes build on freebsd.
15070
15071 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15072
15073         * mini-exceptions.c: Fix a warning.
15074
15075 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15078         stack overflow handling code on amd64 too.
15079
15080         * mini-exceptions.c (mono_setup_altstack): Make this use 
15081         mono_thread_get_stack_bounds ().
15082
15083         * mini-x86.h: Disable sigaltstack on solaris x86.
15084
15085 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15088
15089 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15090
15091         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15092
15093 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15096
15097         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15098
15099 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15100
15101         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15102         due to alignment.
15103
15104 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15105
15106         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15107         to be emitted (bug #82281).
15108
15109 2007-08-01  Martin Baulig  <martin@ximian.com>
15110
15111         Merged the `debugger-dublin' branch.
15112
15113         * debug-debugger.h (MonoDebuggerInfo):
15114         Removed the `old_*' compatibility entries.
15115         Added `debugger_version' and `data_table'.
15116         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15117         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15118
15119         * debug-mini.c
15120         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15121         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15122         instead of a `gconstpointer'.
15123         (mono_debugger_insert_method_breakpoint): Return a
15124         `MonoDebugMethodAddressList *'.
15125
15126 2007-06-28  Martin Baulig  <martin@ximian.com>
15127
15128         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15129
15130 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15133         __builtin_frame_address () since it is broken on older gcc versions.
15134
15135 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15136
15137         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15138         on the stack overflow handling and made the managed stack overflows
15139         catchable in most cases using soft guard pages.
15140         * exceptions-x86.c: added code to restore the protection in the soft
15141         guard pages at the end of exception handling.
15142
15143 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15144
15145         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15146
15147 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15148
15149         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15150         exception handling.
15151
15152 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15153
15154         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15155         signal handling support until it has been ported to the new mechanism.
15156         * mini.c: fixed stack overflow detection and use the new
15157         architecture code  to handle signals on the altstack.
15158
15159 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15160
15161         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15162         stack overflows on the alt stack.
15163
15164 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15165
15166         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15167         stack overflows on the alt stack.
15168
15169 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15170
15171         * exceptions-ppc.c: cleanup preparing for altstack support.
15172
15173 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15174
15175         * exceptions-arm.c: cleanup preparing for altstack support.
15176
15177 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15178
15179         * mini.c (print_jit_stats): Output hazard pointer stats.
15180
15181 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15182
15183         * driver.c, mini.c: Replaced security mode flags with a single
15184         enum variable.
15185
15186 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15187
15188         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15189
15190 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15191
15192         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15193         (which doesn't do anything yet) for activating Core CLR
15194         (Silverlight) security.
15195
15196 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15197
15198         * mini-codegen.c: work around a possible gcc bug on arm.
15199
15200 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15201
15202         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15203         message for platforms that don't support AOT compilation.
15204
15205 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15206
15207         * mini.h, mini.c, driver.c: temporary smcs hack.
15208
15209 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15210
15211         * mini-arm.h, mini-arm.c: arm EABI fixes.
15212
15213 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15214
15215         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15216         case.
15217
15218         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15219         trampolines taking a method argument.
15220
15221         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15222
15223         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15224         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15225
15226         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15227         JIT compilation throws an exception. Fixes #82050.
15228
15229 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15230
15231         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15232         with the MONO_EXCEPTION_ defines.
15233
15234 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15237         #82117.
15238         
15239         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15240         the cause of an assertion.
15241
15242 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15243
15244         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15245         removed.
15246
15247 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15248
15249         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15250         assert. Should fix #82103.
15251
15252 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15253
15254         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15255         here too. Fixes #82095.
15256
15257         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15258         addresses.
15259
15260         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15261
15262         * mini-amd64.h: Enable IMT for amd64.
15263         
15264         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15265
15266 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15267
15268         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15269
15270 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15271
15272         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15273         as soon as check_linkdemand sets an exception_type.
15274
15275 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15276
15277         * mini-x86.c: fixed offsets for IMT call sequence.
15278         * mini-x86.h: enable IMT again.
15279
15280 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15281
15282         * trace.c (mono_trace_enter_method): Decode MonoType too.
15283
15284         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15285
15286         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15287
15288         * mini-amd64.c: Add preliminary IMT implementation.
15289         
15290 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15291
15292         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15293         understand the new IMT-base interface invocation (thanks to
15294         Daniel Nauck for the report and the remote debugging session).
15295
15296 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15297
15298         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15299
15300 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15301
15302         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15303
15304 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15305
15306         * mini-trampolines.c: implement AOT IMT support.
15307         * mini-x86.h: enable IMT support for wider testing.
15308
15309 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15310
15311         * inssel.brg (emit_imt_argument): Add aot support here.
15312
15313         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15314
15315 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15316
15317         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15318         of the IMT implementation, partially from massi, with my
15319         implementation of the bsearch sequence. Disabled by default until
15320         the AOT code is implemented.
15321
15322 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15325
15326         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15327
15328 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15331         arch-independent IMT JIT code from Massimiliano
15332         Mantione (massi@ximian.com) with small cleanups from me.
15333
15334 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15335
15336         * Makefile.am: fix svn invocation to get the svn revision to be
15337         independent of the local language (build fix).
15338
15339 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15340
15341         * mini.c (inline_method): Reset cfg->exception_type if the
15342         inlining is aborted.  Fixes: 82049.
15343
15344 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15345
15346         * mini.c: remove assert from exception handling code when exception_ptr
15347         is not set.
15348
15349 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15350
15351         * mini.c (mono_codegen): Add an assert.
15352
15353         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15354         enter and leave code.
15355         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15356
15357 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15358
15359         * mini-ppc.c: fixed memory corruption for localloc(0)
15360         (bug #81852).
15361
15362 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15363         
15364         * mini.c: Fix warnings.
15365
15366 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15367
15368         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15369         to emit better double->int conversions.
15370
15371 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15372
15373         * mini.c: the provided Min/Max optimizations are valid for unisgned
15374         ints.
15375
15376 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15377
15378         * 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
15379
15380 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15381
15382         * mini.c (mono_running_on_valgrind): Add support for reporting the
15383         method and  its boundaries to valgrind.
15384
15385 2007-06-28  Martin Baulig  <martin@ximian.com>
15386
15387         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15388
15389 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15390
15391         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15392
15393         * generic.2.cs: Add new test case.
15394
15395 2007-06-25  Martin Baulig  <martin@ximian.com>
15396
15397         Merged the `debugger-dublin' branch.
15398
15399         * debug-mini.c
15400         (mono_debugger_insert_method_breakpoint): New public method.
15401         (mono_debugger_remove_method_breakpoint): Likewise.
15402         (mono_debugger_check_breakpoints): New static method.
15403         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15404
15405         * debug-debugger.h (MonoDebuggerInfo):
15406         Renamed (to keep backward compatibility in the vtable):
15407         `insert_breakpoint' -> `old_insert_breakpoint'.
15408         `remove_breakpoint' -> `old_remove_breakpoint'.
15409         `create_string' -> `old_create_string'.
15410         `lookup_class' -> `old_lookup_class'.
15411         `lookup_type' -> removed; changed into a dummy field.
15412         `lookup_assembly' -> `old_lookup_assembly'.
15413         Added (same functionality, but different signature):
15414         `create_string', `lookup_class', `lookup_assembly'
15415         Added new:
15416         `get_method_addr_or_bpt', `remove_method_breakpoint',
15417         `runtime_class_init'.
15418
15419         * debug-debugger.c: Merged the `debugger-dublin' branch.
15420
15421 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15422
15423         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15424         well.
15425         (peephole_pass): Likewise.
15426
15427 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15428
15429         * driver.c: hopefully make setaffinity work also for ancient
15430         versions of linux.
15431
15432 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15433
15434         * driver.c : win32 build fix.
15435
15436 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15437
15438         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15439         processor if it is set.
15440
15441 2007-06-21  Martin Baulig  <martin@ximian.com>
15442
15443         * debug-mini.h: New file.
15444
15445         * debug-mini.c
15446         (mono_debugger_insert_breakpoint_full): Moved here from
15447         ../metadata/mono-debug-debugger.c.
15448         (mono_debugger_remove_breakpoint): Likewise.
15449         (mono_debugger_breakpoint_callback): Likewise.
15450
15451 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15452
15453         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15454         changes in MonoGenericClass.
15455
15456 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15457
15458         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15459
15460 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15461
15462         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15463         removal of MonoGenericMethod.
15464
15465 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15466
15467         * mini-exceptions.c: hooks for the exception events profiling API.
15468
15469 2007-06-14  Randolph Chung  <tausq@debian.org>
15470
15471         * Makefile.ma: Add hppa target.
15472         * mini-arch.h: Include mini-hppa.h
15473         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15474         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15475         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15476
15477 2007-06-14  Randolph Chung  <tausq@debian.org>
15478
15479         * inssel.brg: Add rules for "chained" compare-branch operations so that
15480         a single compare op can affect multiple branches.  Adjust cost for
15481         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15482         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15483         cost for some rules so that they can more easily be overridden by
15484         per-arch rules (with fixes from lupus).
15485         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15486
15487 2007-06-13  Randolph Chung  <tausq@debian.org>
15488
15489         * mini-ops.h: Reorder branch ops so that they match the order of the
15490         corresponding CEE_* ops.  The code expects them this way.
15491         Add new ops for HPPA target.
15492         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15493
15494 2007-06-13  Randolph Chung  <tausq@debian.org>
15495
15496         * mini-exceptions.c: Handle cases where the stack grows towards
15497         larger addresses.
15498         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15499
15500 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15501
15502         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15503         counter.
15504         * driver.c: explain where a non-matching corlib is found.
15505
15506 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15507
15508         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15509
15510 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15511
15512         * mini-exceptions.c: Generate a method profile leave event during
15513         an exception to ensure that the profiler gets notified.
15514
15515 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15516
15517         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15518         branch.
15519
15520         * cpu-amd64.md: Add long_and/or/xor opcodes.
15521
15522 2007-06-06  Wade Berrier  <wberrier@novell.com>
15523
15524         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15525         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15526         length of instruction shr_imm (expected 8, got 10)
15527
15528 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15529
15530         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15531
15532 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15533
15534         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15535         MonoInternalHashTable again (fixed bug in the internal hash table
15536         code).
15537
15538 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15539
15540         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15541         Have to figure out what makes it crash the SWF regression.
15542
15543 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15544
15545         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15546
15547 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15548
15549         * mini.c: optimize out the type check when storing null in a
15550         reference array.
15551
15552 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15553
15554         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15555         MonoInternalHashTable.
15556
15557 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15558
15559         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15560         signed integer methods.
15561
15562 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15563
15564         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15565         permanently since the current approach doesn't work.
15566
15567 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15568
15569         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15570         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15571
15572 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15575         the sreg2==rdx case.
15576         
15577         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15578         account if it contains a rex prefix.
15579         (peephole_pass): Handle OP_FMOVE as well.
15580
15581 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15582
15583         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15584         as it causes regressions.
15585
15586 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15587
15588         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15589         static case as well.
15590
15591         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15592
15593         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15594         (mono_arch_get_this_arg_from_call): Ditto.
15595
15596         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15597
15598         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15599         invoke_impl field.
15600
15601         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15602         (mono_arch_get_this_arg_from_call): Ditto.
15603
15604         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15605         
15606         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15607         try to create optimized invoke code and use that for further invocations. 
15608         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15609
15610         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15611
15612 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15613
15614         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15615         sealed classes or methods.
15616         *devirtualization.cs: tests for the new optimization
15617
15618 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15619
15620         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15621         by the update_volatile () function.
15622
15623 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15624
15625         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15626         require it.
15627
15628         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15629
15630 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15631
15632         * mini.c: Add configure checks for header files.
15633         * mini-x86.c: Add configure checks for header files.
15634         * trace.c: Add configure checks for header files.
15635         * aot-runtime.c: Add configure checks for header files.
15636         * aot-compiler.c: Add configure checks for header files.
15637         * driver.c: Add configure checks for header files.
15638         * mini-codegen.c: Add configure checks for header files.
15639         
15640         Code is contributed under MIT/X11 license.
15641
15642 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15643
15644         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15645         icompare_imm -128 + op_iclt. Fixes #81703.
15646
15647 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15648
15649         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15650
15651 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15652
15653         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15654         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15655         so that all isinst checks now use "interface_bitmap".
15656
15657 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15658
15659         * cpu-amd64.md (jmp): Fix a warning.
15660
15661         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15662
15663         * basic.cs: Add new regression test.
15664
15665         * basic.cs: Remove test which is now in basic-long.cs.
15666
15667         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15668
15669         * basic-long.cs: Add new test.
15670         
15671 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15672
15673         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15674
15675 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15676
15677         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15678
15679         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15680         places.
15681         
15682         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15683         throwing code a bit.
15684
15685         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15686         the exception throwing code a bit.
15687
15688         * mini-x86.c (get_call_info): Allocate result from a mempool.
15689
15690 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15691
15692         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15693
15694         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15695
15696         * mini.h (MonoCompile): Add 'token_info_hash' field.
15697
15698         * mini.c: Save token->method associations during compilation so the AOT 
15699         compiler can use it.
15700         
15701         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15702         which reference generic classes and methods.
15703
15704 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15705
15706         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15707
15708         * aot-compiler.c (compile_method): Fix a typo in a comment.
15709
15710         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15711
15712         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15713         everything generic.
15714
15715         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15716
15717 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15718
15719         * mini.h (MonoCompile): Add 'args' field.
15720
15721         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15722         into cfg->args.
15723
15724         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15725
15726 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15727
15728         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15729
15730         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15731
15732         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15733         opcodes for some opcodes.
15734
15735         * mini.h *.brg *.c: Use the new opcodes.
15736
15737 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15738
15739         * mini.h: Bumped aot revision.
15740
15741         * inssel.brg: modified code generation of type checks for interfaces
15742         to use the new "MonoClass.interface_bitmap" instead of the old
15743         "MonoClass.interface_offsets".
15744
15745 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15748
15749 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15750
15751         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15752         64 bit platforms.
15753
15754 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15755
15756         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15757
15758 2007-04-27  Wade Berrier  <wberrier@novell.com>
15759
15760         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15761         mini.h) to fix build.
15762
15763 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15766         
15767         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15768         causes the corlib unit tests to fail.
15769
15770 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15771
15772         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15773
15774         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15775
15776         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15777         opcodes to the comparison relations.
15778
15779         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15780         opcodes to their types.
15781         
15782         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15783
15784         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15785         it in cfg->arch.cinfo.
15786
15787         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15788
15789         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15790         cfg->cil_offset_to_bb.
15791
15792 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15795         created becase of initlocals.
15796
15797 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15798
15799         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15800         Sergey Tikhonov <tsv@solvo.ru>.
15801
15802 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15803
15804         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15805
15806 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * cpu-s390.md (break): Correct the length of break instruction.
15809
15810 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15811
15812         * mini.c: fix a couple of soft-float issues and comments.
15813
15814 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15815
15816         * trace.c (is_filenamechar): - is also a filename char.
15817
15818 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15819
15820         * mini-s390.c: Correct checking for enum type in return value processing.
15821
15822 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15823
15824         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15825         (version.h): Makefile is in the build directory.
15826
15827 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15828
15829         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15830
15831 2007-04-11  Martin Baulig  <martin@ximian.com>
15832
15833         * mini.c (can_access_member): Fix handling of generic classes;
15834         fixes #81259.
15835
15836 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15837
15838         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15839
15840 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15841
15842         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15843
15844 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15845
15846         * mini-codegen.c: make sure the right spill amount is
15847         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15848
15849 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15850
15851         * mini-ppc.c: fixes for the fp_branch_nan test.
15852
15853 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15854
15855         * basic.cs: Comment out new test which still fails on ia64.
15856
15857 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15858
15859         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15860
15861 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15862
15863         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15864
15865 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15868         on 64 bit machines. Fixes part of #80738.
15869
15870         * basic.cs: Add regression test.
15871
15872 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15873
15874         * inssel.brg basic.cs: Revert previous change to fix build.
15875
15876         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15877         platforms.
15878         
15879         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15880
15881         * basic.cs: Add new regression test.
15882
15883 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15884
15885         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15886         many arguments.
15887
15888 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15889
15890         * cpu-s390x.md: Correct length of break instruction.
15891
15892 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15893
15894         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15895         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15896
15897 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15898
15899         * *.c: Begin WIN64 port.
15900         * mini.c:  Use correct register in profiler.
15901         * mini-amd64.c: No inline assembly on Win64.
15902         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15903         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15904         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15905         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15906         mono_arch_ip_from_context for Win64.
15907         
15908         Contributed under MIT/X11 license.
15909
15910 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15911
15912         * exceptions-amd64.c (seh_handler): Ditto.
15913
15914         * exceptions-x86.c (seh_handler): Fix a memory leak.
15915
15916 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15917
15918         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15919         mini-s390x.c: fixed peephole optimizations to deal
15920         correctly with 1 and 2 byte reload avoidance.
15921
15922 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15923
15924         * cpu-s390.md, cpu-s390x.md: update localloc length.
15925
15926 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15927
15928         * cpu-g4.md: added missing descriptions.
15929
15930 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15931
15932         *  Makefile.am: Add support so the tail tests are not executed on
15933         PowerPC as that is a known limitation of the PowerPC port.
15934
15935 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15936
15937         * runmdesc.bat:  Move to msvc directory.
15938         
15939 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15940
15941         * runmdesc.bat:  Run executable that was produced by the current
15942         target and sent via an argument.
15943         
15944 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15945
15946         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15947         #81102.
15948
15949         * generics.2.cs: Add regression test.
15950
15951 2007-03-09  Wade berrier  <wberrier@novell.com>
15952
15953         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15954
15955 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15956
15957         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15958         AOT code depends on this.
15959
15960 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15961
15962         * mini.c: more precise tracking of types in the eval stack
15963         (part of fix for bug #81044).
15964
15965 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15966
15967         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15968
15969         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15970
15971 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15972
15973         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15974
15975         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15976
15977 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15978
15979         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15980         a pointer on 64 bit systems. Fixes #80190.
15981
15982         * iltests.il: Add new regression test.
15983
15984 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15985
15986         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15987
15988 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15989
15990         * trace.c: Remove an erroneous alignemnt check when tracing.
15991           Fixes --trace on OSX86.
15992
15993 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini-$(arch).h: initialize SP in context for all the archs.
15996
15997 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15998
15999         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
16000         regressions in the thread tests.
16001
16002 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16003
16004         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16005         - fixed implementation of LOCALLOC opcode
16006         - implemented non-un compare for floats
16007         - code cleanup
16008         - implementation of FDIV and CKFINITE opcodes
16009         - fixes for latest mono updates
16010         - additional arch opcodes
16011
16012 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16013
16014         * Makefile.am: simplify and merge rules for cross-compilation.
16015
16016 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16017
16018         * local-propagation.c: Actually *apply* the fix for bug 80591...
16019
16020 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16021
16022         * mini-exceptions.c: backuot part of the last change
16023         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16024
16025 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16026         * inssel.brg: Fix bug 59286.
16027
16028
16029 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16030
16031         * mini-exceptions.c: patch from Zoltan to correctly check for
16032         stack boundaries (using the stack register, not the frame register),
16033         fixes bugs #80724, #79717.
16034
16035 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16036
16037         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16038         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16039
16040         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16041         presence of frame pointer elimination.
16042
16043 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16044         
16045         * mini-x86.h: NetBSD UCONTEX_REG defines.
16046
16047 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16048
16049         * inssel-amd64.brg: Fix amd64 build.
16050
16051 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16052
16053         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16054         on amd64.
16055
16056 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16057
16058         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16059         ends.
16060
16061         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16062
16063 2007-01-30 Mark Mason <mason@broadcom.com>
16064
16065            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16066            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16067            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16068            beginning support for CEE_JMP [not quite working yet]
16069            * tramp-mips.c: LMF handling now works
16070         
16071 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16072
16073         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16074
16075         * mini.h (NULLIFY_INS): New macro.
16076
16077 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16078
16079         * mini.c: statistical profiler fix for windows, patch
16080         from Tor Lillqvist (tml@novell.com).
16081
16082 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16083         * local-propagation.c: Fix bug 80591.
16084
16085 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16086
16087         * Makefile.am: put back the --export-dynamic option as with
16088         the previous gmodule flags (thanks to Robert Jordan).
16089
16090 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16091
16092         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16093
16094         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16095         simplify and speed up the local register allocator. Also rename some fields
16096         like iassign->vassign.
16097         
16098         * regalloc.c: Remove some functions which are no longer used since their
16099         inlined version is in mini-codegen.c.
16100         
16101         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16102
16103         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16104
16105 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16106
16107         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16108         narrowing. Fixes #80622.
16109
16110         * iltests.il: Add new regresssion test. 
16111
16112 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16113
16114         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16115         debug-debugger.c, debug-debugger.h: warning fixes.
16116         * driver.c: updated copyright year and made it fit in one line.
16117
16118 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16119
16120         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16121
16122 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16123
16124         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16125
16126         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16127
16128         * iltests.il: Add new test for bug #80507.
16129
16130 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16131
16132         * mini-arm.h: use soft-float also on vfp for now.
16133
16134 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16135
16136         * mini.c: fix some more soft-float issues.
16137
16138 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16139
16140         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16141
16142 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16143         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16144         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16145         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16146
16147 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16148
16149         * mini-arm.c: typo fix.
16150
16151 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16152
16153         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16154
16155 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16156
16157         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16158         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16159
16160         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16161
16162         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16163
16164         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16165         
16166         * inssel.brg: Fix a warning.
16167
16168         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16169
16170         * abcremoval.c ssa.c ssapre.c: Update after this change.
16171         
16172         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16173
16174         * dominators.c (df_set): Use mono_bitset_union_fast.    
16175
16176 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16177
16178         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16179         mini-codegen.c: reduce relocations and memory usage for the cpu
16180         description.
16181
16182 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16185
16186         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16187         to reduce their size.
16188
16189 2007-01-19 Mark Mason <mason@broadcom.com>
16190
16191         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16192         * mini-mips.c: more configuration macros, support long conditional branches, additional
16193         asserts, fix epilog instrumentation.
16194         * mini-mips.h: use standard stack walk
16195         * cpu-mips.md: increase size of div, rem and conditional branches
16196         
16197 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16200         to cpu spec data.
16201
16202 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16203
16204         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16205         (compile_method): Ditto.
16206
16207         * aot-runtime.c (decode_klass_info): Ditto.
16208
16209         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16210         needed by the code generated by inssel.brg. Also fix a warning.
16211
16212 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16213
16214         * mini.c: deal with enums that become genericinsts by
16215         being nested in a generic class (bug #79956).
16216
16217 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16218
16219         * mini.c: match the generic definition to check for
16220         private access with generic types (bug #78431).
16221
16222 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16223
16224         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16225         to make life easier for people cross-compiling that insist on not
16226         using scratchbox.
16227
16228 2007-01-17 Mark Mason <mason@broadcom.com>
16229
16230         * inssel-long.brg: patch to deal with mips missing flags
16231         * inssel-long32-mips.brg: implement overflow checks
16232         * insset-mips.brg: implement overflow checks
16233         * mini-mips.h: implement conditional exception handling
16234         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16235           Remove unused code, minor cleanups.
16236         * exceptions-mips.c: minor cleanups
16237         * mini-ops.h: add mips conditional exception ops
16238         * cpu-mips.md: add mips conditional exception ops
16239
16240         
16241 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16242
16243         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16244         to deal with mips missing of flags.
16245
16246 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16247
16248         * exceptions-ppc.c: execute fault handlers.
16249
16250 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16251
16252         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16253
16254 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16255
16256         * mini.c: handle also floating point values in initialize_array.
16257
16258 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16259
16260         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16261         array initialization and make it conditional on the intrins option.
16262
16263 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16264
16265         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16266         relocations and put the patch info names close to the enum definition.
16267
16268 2007-01-15 Mark Mason <mason@broadcom.com>
16269
16270         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16271
16272 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16273
16274         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16275
16276 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16277
16278         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16279
16280 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16281
16282         * Makefile.am: distribute the mips sources.
16283
16284 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16285
16286         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16287         directly.
16288
16289 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16290
16291         * cpu-x86.md: back out for now as this triggers other regressions.
16292
16293 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16294
16295         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16296         to eax:edx, so ecx can't get allocated to them (bug #80489).
16297
16298 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16299
16300         * mini.c, mini-exceptions.c: enabled running fault handlers
16301         (bug #80469).
16302
16303 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16304
16305         * driver.c: If nothing fail, do not use the string "failed",
16306         because it makes it very annoying to view test result logs on the
16307         web. 
16308
16309 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16310
16311         * debug-debugger.c (mono_debugger_main): Rename "main" to
16312         "main_method" to prevent a warning.
16313
16314         Remove a warning for unused field.
16315
16316 2006-12-28  Martin Baulig  <martin@ximian.com>
16317
16318         * debug-debugger.c
16319         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16320
16321 2006-12-22  Martin Baulig  <martin@ximian.com>
16322
16323         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16324         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16325         seperate `.mdb_debug_info' section, so we can access it from the
16326         debugger even if the binary is stripped.
16327
16328         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16329         from the `.mdb_debug_info' here to prevent the linker from
16330         removing that section.
16331
16332         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16333         mdb-debug-info64.s.
16334
16335 2006-12-19  Robert Jordan  <robertj@gmx.net>
16336
16337         * mini-x86: enable the code to return small structures in
16338         registers for FreeBSD as well. Fixes bug #80278.
16339         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16340
16341 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16342
16343         * mini-x86.c: align the stack when calling the profiler
16344         function instrumenting the prolog (on OSX).
16345
16346 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16347
16348         * mini.c: emit a break opcode where Debugger.Break () is called.
16349
16350 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16351
16352         * mini.c (mono_method_to_ir): Provide useful information on this
16353         assert, to prevent others from debugging like I did.
16354
16355 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16356
16357         * mini.c: enable code which was incorrectly commented
16358         (bug #80235).
16359
16360 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16361
16362         * mini-x86.c: enable on OSX, too, the code to return small
16363         structures in registers.
16364
16365 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini-x86.c: remove the use of the dynamic code manager here, too.
16368
16369 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16370
16371         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16372         mono_debugger_create_notification_function() to use
16373         mono_global_codeman_reserve () instead of a dynamic code manager.
16374
16375 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16376
16377         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16378         ves_array_element_address() jit icall and use a generated
16379         managed method instead (which is about 4 times faster for a rank 3
16380         array access).
16381
16382 2006-11-29  Mark Mason  <mason@broadcom.com>
16383
16384         * basic-calls.cs: additional tests for passing
16385         structures as function arguments.
16386
16387 2006-11-29  Mark Mason  <mason@broadcom.com>
16388
16389         * mini-mips.h: disable custom exception handling
16390         * mini-mips.c: throw/rethrow should use jalr to call
16391         exception stubs.  Fixed bug with passing structures
16392         by value. More support for tracing floating point
16393         functions.
16394
16395 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16396
16397         * mini.c: fixed typo in the soft-float ldind.r4 handling
16398         (bug #80086).
16399
16400 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini.c, mini.h, driver.c: added --runtime command line
16403         option to select a different runtime than the autodetected one.
16404         * jit.h: added API for embedders to initialize with a specific
16405         runtime version.
16406
16407 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16408
16409         * mini.c: handle also boxing of r4 values (bug #80024).
16410
16411 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16412
16413         * mini-ppc.c: force indirect calls until we reserve
16414         enough address space for all the generated code.
16415
16416 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16417
16418         * exceptions-arm.c: workaround bugs in the libc definition
16419         of struct ucontext.
16420
16421 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16422
16423         * inssel.brg: fixes from me and Mark Mason.
16424
16425 2006-11-23  Dick Porter  <dick@ximian.com>
16426
16427         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16428         semaphore display now we've fixed the initial value
16429
16430 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16431
16432         * inssel.brg: partially revert the last change to fix the build.
16433
16434 2006-11-21  Mark Mason  <mason@broadcom.com>
16435
16436         * inssel.brg: Add and use compare-and-branch macros to support
16437         architectures that do not have condition code registers (ie. MIPS).
16438         * *-mips.{c,brg,md}: Fix copyright statements
16439
16440 2006-11-20  Mark Mason  <mason@broadcom.com>
16441
16442         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16443         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16444         * mini.h: Added declaration for mono_print_ins()
16445         * mini-codegen.c: added ins_spec initializer for MIPS
16446         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16447         vreg to be virtual and hreg to be non-virtual.
16448         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16449         is not yet working/implemented correctly.
16450         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16451         non-static, fixup calls to print_ins() from other parts in the file.
16452
16453 2006-11-20  Mark Mason  <mason@broadcom.com>
16454
16455         * basic-calls.cs: added tests for passing structures as arguments
16456         to calls.
16457
16458 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16459
16460         * inssel-long32.brg: optimize signed division by power of two.
16461
16462 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16463
16464         * mini-arm.c: added support for interworking with thumb code
16465         (mono must be still be built using the ARM instruction encoding).
16466
16467 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16468
16469         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16470         verifier has different rules for it.   Fixes a few verifier issues
16471         in the test suite.
16472
16473         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16474         at the end, so people know what happened.
16475
16476 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16477
16478         * brach-opts.c: in optimize_exception_target() make sure we
16479         are in a catch clause (fixes bug #79871).
16480
16481 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16482
16483         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16484         more soft-float support fixes.
16485
16486 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16487
16488         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16489         that are passed half on the stack and half in registers.
16490
16491 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16494         more mips integration work from Mark E Mason 
16495         <mark.e.mason@broadcom.com>.
16496
16497 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16498
16499         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16500         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16501         tramp-mips.c: added sources for the mips port, not
16502         integrated in the build yet. Contributed by
16503         Mark E Mason <mark.e.mason@broadcom.com>.
16504
16505 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16506
16507         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16508
16509 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16510
16511         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16512         put the soft-float rules in its own file since it seems to
16513         break s390 compilation.
16514
16515 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16516
16517         * mini-arm.c: fixed wrnings.
16518
16519 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16520
16521         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16522         inssel-arm.brg: ARM support for soft-float.
16523
16524 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16525
16526         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16527         loads and stores of 32 bit fp values.
16528
16529 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16530
16531         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16532
16533         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16534         works. Fixes #79852 and #79463.
16535
16536 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16537
16538         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16539         more soft-float support WIP and fixes.
16540
16541 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16542
16543         * mini-arm.c: some VFP updates.
16544
16545 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16546
16547         * mini-exceptions.c: 0 is a valid local var offset in some
16548         architectures, don't assert (bug #78508).
16549
16550 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16551
16552         * exceptions-arm.c: fixed off by one error in stack walk code.
16553
16554 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16555
16556         * mini.h, mini.c: more precise tracking of type load exceptions.
16557
16558 2006-11-03  Robert Jordan  <robertj@gmx.net>
16559
16560         * Makefile.am: [WIN32] Add monow.exe target.
16561         * driver.c: [WIN32] Don't detach the console when debugging.
16562         Fixes bug #79797.
16563         
16564 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16565
16566         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16567
16568 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16569
16570         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16571
16572         * driver.c (mini_regression): Fix --regression with AOT.
16573
16574         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16575
16576 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16577
16578         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16579
16580         * mini-sparc.h: Don't use sigaction on sparc/linux.
16581
16582         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16583
16584         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16585
16586         * mini-exceptions.c: Add proper include files for getpid ().
16587
16588 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16589
16590         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16591         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16592         method.
16593
16594         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16595         name cache to reduce its size.
16596
16597         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16598
16599 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16600
16601         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16602         the mono_lmf TLS variable.
16603
16604         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16605         trampoline lmf frames.  
16606
16607         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16608
16609 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16610
16611         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16612         the mono_lmf TLS variable.
16613
16614         * mini-exceptions.c: Access the LMF structure through accessors.
16615
16616         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16617         variable instead of in jit_tls->lmf.
16618
16619         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16620         
16621         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16622         trampoline lmf frames.
16623
16624         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16625
16626 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16627
16628        * mini.c trace.c mini-x86.c: Revert these too.
16629         
16630        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16631        signature change.
16632
16633 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16634
16635         * genmdesc.c: removed now dead code.
16636
16637 2006-10-09  Robert Jordan <robertj@gmx.net>
16638
16639         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16640
16641 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * mini.h: do not leave gaps in the opcode values.
16644
16645 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16646
16647         * jit-icalls.h: flag functions as internal here, too.
16648
16649 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16650
16651         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16652         functions with the internal attribute.
16653
16654 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16655
16656         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16657
16658 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16659
16660         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16661         for soft-float.
16662
16663 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16664
16665         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16666         tail calls as on other platforms.
16667
16668         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16669
16670         * iltests.il: Add a few tailcall tests.
16671
16672 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16673
16674         * driver.c: fix loop for old compilers (bug #79521).
16675
16676 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16677
16678         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16679
16680         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16681
16682         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16683         metadata without any code.
16684
16685         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16686         more precise debugging information using gdb.
16687
16688 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16689
16690         * inssel-ia64.brg: Make the helper methods static.
16691
16692 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16693
16694         * inssel-x86.brg: make the helper methods static.
16695
16696 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16697
16698         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16699
16700 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16701
16702         * mini.c: updates for monoburg changes.
16703         * inssel.brg: make a few helper functions static as they should.
16704
16705 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16706
16707         * Makefile.am: Move mini-codegen.c to common_sources.
16708
16709 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16710
16711         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16712         instructions.
16713         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16714         mini-ppc.h: port to use the common local register allocator.
16715
16716 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16717
16718         * mini.h: Remove the comment too then.
16719
16720 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16721
16722         * mini.h: put back backend.data which is to be used shortly and
16723         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16724         pointers on 4 byte boundaries it'd have much bigger issues running
16725         and you can ifdef it out anyway.
16726
16727 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16728
16729         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16730         MonoInst size by 4 bytes on 64 bit machines.
16731
16732 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16733
16734         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16735         replacement with more meaningful field names. Arch maintainers, please
16736         check the assigned names are good enough for your arch.
16737
16738 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16739
16740         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16741         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16742
16743 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16744
16745         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16746         relocations and memory requirements, put the optimization flags
16747         definitions in their own file.
16748
16749 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16750
16751         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16752
16753         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16754
16755 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16758
16759 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16760
16761         * inssel.brg: use the correct function to get the size of an item
16762         in an array, given an element class.
16763         * aot-compiler.c: do not access class->class_size directly.
16764
16765 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16766
16767         * mini.h, debug-mini.c: added a debugging function to print
16768         info about local variables and arguments in a jitted method.
16769
16770 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16771
16772         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16773
16774         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16775
16776 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16777
16778         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16779         inner and outer loops when passing vtypes.
16780
16781 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16782
16783         * mini-ppc.c: take into account the cpu errata for cache flushing
16784         which caused some random errors (bug #79381).
16785
16786 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16787
16788         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16789         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16790
16791 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16792
16793         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16794         loaded.
16795
16796         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16797         freebsd ports tree.
16798
16799         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16800         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16801
16802         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16803         displacement.
16804
16805 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16808
16809 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16810
16811         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16812         macro does not have to be changed during debugging.
16813
16814         * 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>.
16815
16816         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16817
16818         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16819         
16820         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16821         MONO_ARCH_NO_EMULATE_MUL is defined.
16822
16823         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16824
16825         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16826
16827         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16828
16829         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16830         
16831 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16834         stuff to mini-exceptions.c where it is used.
16835
16836         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16837         setup code, the real one is in mini-exceptions.c.
16838
16839         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16840         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16841         some changes from the freebsd ports tree.
16842
16843         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16844         constants.
16845         
16846         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16847
16848 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16849
16850         * mini.c: on Linux, check for /proc to be mounted
16851         (bug# 79351, novell bug#201204).
16852
16853 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16854
16855         * mini.c: handle cases where pthread_attr_getstack() behaves
16856         incorrectly (bug #78096).
16857
16858 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16859
16860         * mini-arm.c: support larger stack frames (bug #79272).
16861
16862 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16863
16864         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16865
16866         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16867         tokens.
16868
16869         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16870         mono_class_from_name () to find a class from its name.
16871
16872         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16873
16874 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16875
16876         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16877
16878 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16879
16880         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16881
16882 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16883
16884         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16885         callinfo->trampoline.
16886
16887         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16888         fixes #79271.
16889         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16890         future.
16891
16892 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16893
16894         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16895
16896 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16897
16898         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16899         stats.method_trampolines, it is already done by the generic trampoline code.
16900
16901         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16902         
16903 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16904
16905         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16906
16907         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16908
16909         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16910
16911         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16912         
16913         * mini.c (print_jit_stats): Print new stats.
16914
16915         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16916
16917 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16920         Address on two dimensional arrays. Fixes #78729.
16921
16922         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16923
16924         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16925         a method.
16926
16927         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16928
16929         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16930         #79130.
16931         
16932         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16933         a race condition.
16934         (mini_get_ldelema_ins): Ditto.
16935
16936 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16937
16938         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16939         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16940         Fixes #79213.
16941
16942 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16943
16944         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16945         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16946
16947         * exceptions-s390x.c: Cosmetic change.
16948
16949         * tramp-s390.c: Fix warning.
16950
16951         * cpu-s390.md: Correct length of mul_imm.
16952
16953 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16954
16955         * aot-compiler.c: added binary writer with ELF backend
16956         implementation (only on Linux/x86 for now).
16957
16958 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * Makefile.am: Don't run net 2.0 AOT tests.
16961
16962         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16963         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16964
16965         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16966
16967 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16968
16969         * aot-compiler.c: simplified and refactored the asm-writing code
16970         to allow different backends.
16971
16972 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16973
16974         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16975
16976         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16977         little. Share patches of type TYPE_FROM_HANDLE as well.
16978
16979         * mini.c (mono_patch_info_equal): New helper function.
16980         (mono_patch_info_hash): Ditto.
16981
16982         * aot-compiler.c (emit_method_code): Fix s390 build.
16983
16984         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16985         is not handled because it is stored as a flag and not as a type ctor. Fixes
16986         #79016.
16987
16988 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * aot-compiler.c: Fix computation of GOT slot statistics.
16991         
16992         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16993         Also remove support for not PIC AOT.
16994
16995         * mini.h: Bump AOT file format version.
16996
16997         * objects.cs: Add a test for #78990.
16998
16999         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
17000         (peter.dettman@iinet.net.au). Fixes #79087.
17001
17002         * basic-long.cs: Add a test for the above.
17003
17004 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17005
17006         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17007         
17008         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17009         code somewhat.
17010
17011 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17012
17013         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17014         exceptions.
17015
17016 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17017
17018         * mini.c: Don't verify COM proxy invoke calls
17019         
17020
17021 2006-08-10  Dick Porter  <dick@ximian.com>
17022
17023         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17024         which process is holding semaphores locked.
17025
17026 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * mini-ia64.c mini-amd64.c: Fix #79027.
17029
17030         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17031
17032         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17033
17034         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17035         implicit arguments in a vararg call. Fixes #79027.
17036
17037 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17038
17039         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17040         (mono_get_array_new_va_signature): Ditto.
17041
17042 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17043
17044         * aot-runtime.c: Call init_plt lazily.
17045
17046         * inssel-long.brg: Fix unsigned long->int conversion.
17047
17048         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17049
17050         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17051         that most data is now in the .rss/.data section.
17052
17053 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17054
17055         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17056
17057         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17058
17059         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17060
17061         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17062
17063         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17064         virtual call. Fixes #79010.
17065
17066         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17067         and use the result as the this argument in the real call.
17068
17069         * generics.2.cs: Add a new test for #79010.
17070         
17071 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17072
17073         * mini-x86.c: Fix a warning.
17074
17075         * aot-compiler.c: Add a bunch of statistics.
17076
17077         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17078
17079 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17080
17081         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17082
17083 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17084
17085         * 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>.
17086
17087 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17088
17089         * mini.c (mono_method_to_ir): Obtain the original method in the
17090         CIL stream and use this to perform validation.
17091
17092         Fixed: #78816
17093
17094 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17095
17096         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17097         (mono_arch_call_opcode): Ditto.
17098
17099         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17100         #78826.
17101
17102         * mini.c (mono_patch_info_dup_mp): New helper function.
17103         
17104         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17105         compilation. Fixes #78827.
17106
17107 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17108
17109         * declsec.c: Use original security informations for
17110           MONO_WRAPPER_MANAGED_TO_MANAGED.
17111
17112 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17113
17114         * mini.c: Allow Com Interop methods/classes and
17115         don't verify COM wrapper calls
17116         
17117
17118 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17119
17120         * inssel-long32.brg: Fix long->i4 checked conversion.
17121
17122         * exceptions.cs: Add a test for the above.
17123
17124 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17125
17126         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17127
17128         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17129         leaks.
17130
17131         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17132         #78775.
17133
17134 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17135
17136         * mini.c: Fix solaris/x86 exception handling.
17137
17138         * Makefile.am: Get rid of $(ICU_LIBS).
17139
17140 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17141
17142         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17143         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17144         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17145
17146         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17147
17148         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17149         this function causes a SIGSEGV.
17150
17151 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17152
17153         * mini.c: Remove unused solaris/x86 includes.
17154
17155 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17156
17157         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17158
17159 2006-06-20  Jb Evain  <jbevain@gmail.com>
17160
17161         * cpu-g4.md: fix max length of start_handler instruction.
17162
17163 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17164         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17165
17166 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17167         * ssa.c: Fixed bug 78653 for SSA based deadce.
17168         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17169         MonoInst.flags, used in SSA based deadce.
17170         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17171         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17172
17173 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17174
17175         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17176         it can end up using non executable memory on ppc64 systems
17177         running ppc32 userspace (fix from Johannes Berg).
17178
17179 2006-06-14  Dick Porter  <dick@ximian.com>
17180
17181         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17182         4.1.1
17183
17184 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17185         * mini.c: Made so that inline is locally disabled if it would
17186         trigger a .cctor, because too many apps depend on this behavior
17187         (which seems to be also the one of the MS CLR).
17188
17189 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17190
17191         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17192         No idea why this worked before.
17193
17194         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17195         which branch to outer exception clauses since they could skip the
17196         inner finally clauses. Fixes #78633.
17197
17198         * exceptions.cs: Add a test for the above.
17199
17200         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17201         Fixes #78629.
17202
17203         * iltests.il: Add a test for the above.
17204
17205 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17206
17207         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17208         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17209
17210         * iltests.il: Add a test for the above.
17211
17212 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17213
17214         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17215         
17216         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17217         methods as instrinsics.
17218
17219 2006-06-09  Wade Berrier <wberrier@novell.com>
17220
17221         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17222         (simple-cee-ops.h ssapre-mini-ops.h)
17223
17224 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17225
17226         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17227         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17228         instruction).
17229         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17230         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17231
17232 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17233
17234         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17235
17236 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17237
17238         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17239         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17240         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17241         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17242         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17243         of opcodes, so that bug 78549 should not happen again.
17244         * ssapre.c: Updated to use the renamed files.
17245
17246 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17247
17248         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17249         in OP_ATOMIC_EXCHANGE_I4.
17250
17251 2006-06-07  Wade Berrier <wberrier@novell.com>
17252
17253         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17254         in mono_debugger_create_notification_function)
17255
17256 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17259         
17260         * mini.c (type_from_stack_type): Disable some changes which do not
17261         seem to work.
17262
17263         * driver.c: Reenable opts.
17264
17265         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17266         of the evaluation stack.
17267         
17268         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17269         evaluation stack trace at entry to the bblock.
17270
17271         * mini.c (merge_stacks): New function to perform verification of stack merges.
17272         Turned off by default.
17273
17274         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17275         STACK_MP.
17276         
17277 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17278
17279         * local-propagation.c: Fixed bug 78549.
17280
17281 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17284
17285 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17286
17287         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17288         tramp-arm.c, tramp-ia64.c
17289         (mono_debugger_create_notification_function): Update signature to
17290         new signature and use new protocol for creating the notification
17291         function.  
17292
17293         Should fix the build.
17294
17295 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17296
17297         * exceptions-ppc.c (mono_jit_walk_stack)
17298         (ves_icall_get_frame_info): Fix the build
17299
17300 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17301
17302         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17303
17304 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17305
17306         * il2tests.2.il: New file for generics CIL tests.  Add test for
17307         #78019.
17308         * Makefile.am: Update.
17309
17310         Fix #78019
17311         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17312         to nullable types.
17313
17314 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17315
17316         * aliasing.c: Fixed bug 78311.
17317
17318 2006-05-29  Martin Baulig  <martin@ximian.com>
17319
17320         * mini-exceptions.c (mono_find_jit_info): When computing the
17321         native offset, check whether we're actually inside the method's
17322         code; call mono_debug_print_stack_frame() to format the frame.
17323         (ves_icall_System_Exception_get_trace): Call
17324         mono_debug_print_stack_frame() to format the stack frame.
17325         (ves_icall_get_trace): Update to the new debugging API.
17326         (mono_jit_walk_stack_from_ctx): Likewise.
17327         (ves_icall_get_frame_info): Likewise.
17328
17329         * mini.c (get_method_from_ip): Use the new debugging API.
17330         (mono_print_method_from_ip): Likewise.
17331
17332         * exceptions-ppc.c
17333         (mono_jit_walk_stack): Use the new debugging API.
17334         (ves_icall_get_frame_info): Likewise.   
17335
17336 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17337
17338         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17339
17340 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17341
17342         * mini.c: Added "limitator" to inline for debugging.
17343
17344 2006-05-24  Martin Baulig  <martin@ximian.com>
17345
17346         * debug-debugger.c (mono_debugger_init): Create a private,
17347         malloc()-based code manager for the notification function and
17348         intentionally leak it on exit.  This fixes the crash-on-exit race
17349         condition.
17350
17351         * tramp-amd64.c
17352         (mono_debugger_create_notification_function): Added
17353         `MonoCodeManager *' argument.
17354
17355         * tramp-x86.c
17356         (mono_debugger_create_notification_function): Added
17357         `MonoCodeManager *' argument.
17358
17359 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17360
17361         * aliasing.c: Fixed 64 bit issue.
17362         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17363         default since all known bugs are fixed (one more time!).
17364
17365 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17366
17367         * mini.c: write barrier support.
17368
17369 2006-05-23  Martin Baulig  <martin@ximian.com>
17370
17371         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17372         check at the top of the file.
17373
17374 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17375
17376         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17377         reverting changes without reason and without changelog entries.
17378
17379 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17380
17381         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17382         to a few opcodes. Fixes #78439.
17383
17384         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17385         consistency with other archs.
17386
17387         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17388
17389 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17390
17391         * debug-debugger.c: fix the build.
17392
17393 2006-05-17  Martin Baulig  <martin@ximian.com>
17394
17395         * debug-debugger.c
17396         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17397         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17398         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17399         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17400
17401 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17402
17403         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17404
17405 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17406
17407         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17408         MONO_TYPE_GENERICINST.
17409         
17410         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17411         MONO_TYPE_GENERICINST.
17412
17413 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17414
17415         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17416         #78325.
17417
17418 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17419
17420         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17421         mempool.
17422         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17423
17424 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17425
17426         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17427         mono_trace_cleanup ().
17428
17429         * iltests.il: Fix problem with the newly added test.
17430
17431         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17432         due to register constraints, free up the previous hreg. Fixes #78314.
17433
17434         * iltests.il: Add new test for #78314.  
17435
17436         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17437         Interlocked.Add. Fixes #78312.
17438
17439         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17440         
17441 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17442
17443         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17444
17445 2006-05-05  Martin Baulig  <martin@ximian.com>
17446
17447         * debug-mini.c (mono_debug_open_block): New method.
17448
17449         * mini-amd64.c
17450         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17451         the beginning of each basic block.
17452
17453         * mini-x86.c
17454         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17455         the beginning of each basic block.
17456
17457 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17458
17459         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17460         default until I understand why they break the build on amd64.
17461
17462 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17463
17464         * mini.c (mini_cleanup): Call mono_cleanup ().
17465
17466         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17467         errors.
17468
17469 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17470
17471         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17472         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17473         default since all known bugs are fixed, and I cannot reproduce bug
17474         77944... I'm asking Matt Hargett to test again after this commit.
17475
17476 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17477
17478         * mini-codegen.c: Fixed typo that thrashed inline.
17479
17480 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17481
17482         * dominators.c (compute_dominators): Avoid using a worklist since
17483         it is not correct in some cases. Instead, iterate over all bblocks as
17484         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17485
17486 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17487
17488         * mini.c (mono_jit_compile_method_inner): Use
17489         mono_prepare_exception_from_error that resets the value
17490         internally.
17491
17492 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17493
17494         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17495         
17496 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17497
17498         * aliasing.c: Fixed bug 78210.
17499
17500 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17501
17502         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17503         default until all their problems (or the ones they trigger) are fixed.
17504
17505 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17508         
17509         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17510         as loaded only after resolving patches since that could invoke the same method.
17511
17512         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17513
17514         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17515         functions.
17516
17517         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17518         AOT loader.
17519
17520         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17521         stack.
17522
17523         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17524         made from AOT code through the PLT table.
17525
17526         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17527         holding the plt offset when a call is made to the aot plt trampoline.
17528         
17529 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17530
17531         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17532         amd64 AOT support.
17533
17534         * Makefile.am (common_sources): Fix build breakage.
17535
17536         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17537         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17538         intra-assembly calls if possible.
17539         
17540         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17541
17542         * mini-trampolines.c: Handle PLT entries.
17543
17544         * mini.c: Avoid creating a GOT var for calls.
17545
17546         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17547         from mscorlib code.
17548
17549         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17550         from mscorlib code.
17551
17552         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17553         AOT code.       
17554
17555         * mini.h: Bump AOT file format version.
17556         
17557         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17558         covers more cases.
17559
17560 2006-04-25  Martin Baulig  <martin@ximian.com>
17561
17562         * driver.c: Disable copyprop, consprop and inline when running
17563         inside the debugger.
17564
17565 2006-04-25  Martin Baulig  <martin@ximian.com>
17566
17567         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17568         with `get_current_thread' and added `detach'.
17569         (MonoDebuggerMetadataInfo): Added `thread_size',
17570         `thread_tid_offset', `thread_stack_ptr_offset' and
17571         `thread_end_stack_offset'.
17572
17573 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17574
17575         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17576         aot-runtime.c.
17577
17578         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17579         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17580
17581         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17582
17583         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17584
17585         * aot.c: Add support for ADJUSTED_IID.  
17586
17587 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17588
17589         * aot.c (emit_method_order): Don't align method_order_end.
17590
17591         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17592         the interface ID changes.
17593
17594 2006-04-21  Dick Porter  <dick@ximian.com>
17595
17596         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17597         cleaning up a thread.  Fixes the new part of bug 77470.
17598
17599 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17600
17601         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17602         to managed wrapper.
17603                      
17604 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17605
17606         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17607         
17608         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17609         SIGSEGV. Fixes #78072.
17610
17611         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17612         unregister our SIGABRT handler.
17613
17614 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17615
17616         * mini.c: Disabled inline where it can alter the call stack in a
17617         way visible from managed code.
17618         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17619         default.
17620
17621 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17622
17623         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17624         on other platforms. Fixes #78089.
17625
17626 2006-04-13  Martin Baulig  <martin@ximian.com>
17627
17628         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17629         determine whether we're inside the debugger.
17630
17631         * debug-debugger.h
17632         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17633
17634 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17635
17636         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17637         handler clauses. Fixes #78024.
17638
17639         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17640         in the CALL_MEMBASE opcodes. Fixes #78088.
17641         (mono_arch_get_vcall_slot_addr): Ditto.
17642
17643 2006-04-10  Martin Baulig  <martin@ximian.com>
17644
17645         * debug-debugger.c: The thread handling code has now been moved
17646         into ../metadata/threads.c.
17647
17648 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17649
17650         * driver.c (mono_main): Fix --with-gc=none build.
17651
17652         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17653         (mono_spillvar_offset_float): Ditto.
17654         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17655         hreg, not when its !global, since on ia64, there is a third category: stacked
17656         registers.      
17657
17658 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17659
17660         * mini.c: set MonoInst->klass for load field address and a few other
17661         places.
17662
17663 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17664
17665         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17666
17667 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17668
17669         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17670         the branch opt changes.
17671
17672 2006-04-06  Dick Porter  <dick@ximian.com>
17673
17674         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17675         
17676         * wapihandles.c (mini_wapi_seminfo): 
17677         * driver.c (mono_main): Add semaphore info option
17678
17679 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17680
17681         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17682         branch optimization changes. Fixes #78009.
17683
17684 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17685
17686         * mini.c: ignore accessibility of methods in managed->native wrappers.
17687
17688 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17691         
17692         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17693
17694 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17695
17696         * mini.c: Modify the branch optimizations to preserve the invariant that
17697         the entries inside the in_bb and out_bb arrays are unique.
17698         (mono_unlink_bblock): Avoid creation of new arrays.
17699
17700 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17701
17702         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17703         change (#77992).
17704
17705 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17706
17707         * mini.c (optimize_branches): Remove the "optimizations" in
17708         the cbranch1/cbranch2 -> branch cases which were causing several
17709         problems in the past. Fixes #77986.
17710
17711 2006-03-31  Chris Toshok  <toshok@ximian.com>
17712
17713         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17714         default optimizations :(
17715
17716 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17717
17718         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17719         branch.
17720
17721 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17722
17723         * local-propagation.c: Added comments to structs and removed
17724         "Mono" prefixes from local tree mover types.
17725
17726 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17727
17728         * Makefile.am (arch_sources): Define this for each architecture so 
17729         libmono_la_SOURCES is defined in one place.
17730
17731 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17732
17733         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17734         from handles/.
17735
17736 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17737
17738         * driver.c: print the GC name supplied by configure.
17739
17740 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17741
17742         * local-propagation.c: Added tree mover, and moved here all the
17743         local propagation code from mini.c
17744         * mini.c: Added support for treeprop, and moved all the local
17745         propagation code to local-propagation.c
17746         * mini.h: Added support for treeprop
17747         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17748         treeprop, inline and deadce by default
17749         * Makefile.am: Added local-propagation.c
17750
17751 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17752
17753         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17754
17755 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17756
17757         * debug-debugger.c: make it compile without the Boehm GC.
17758
17759 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17760
17761         * mini.c: fixed issue with mismatch when an icall is registered
17762         with multiple names but same address.
17763
17764 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17765
17766         * declsec.c, mini-exceptions.c: use write barrier to set reference
17767         fields of managed objects.
17768
17769 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17770
17771         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17772         (can_access_internals): Fix a warning.
17773
17774         * mini.c (print_method_from_ip): Rename this to 
17775         mono_print_method_from_ip so it gets exported.
17776
17777         * trace.c: Deal with strings inside StringBuilder's containing garbage
17778         and fix memory leaks. Fixes #77848.
17779
17780 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17783         fixes #77787.
17784
17785 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17786         
17787         * mini-s390.c: Remove OP_X86_TEST_NULL.
17788
17789 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17790
17791         * mini.c: use the correct GetHashCode() for the moving collector.
17792
17793 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17794
17795         * liveness.c: Regalloc spill cost tuning.
17796
17797 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17798         
17799         * mini-s390x.h: Correct S390_LONG macro.
17800
17801         * mini-s390x.c: Cleanup unused code.
17802
17803 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17804
17805         * jit-icalls.h: New file.
17806
17807         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17808         icalls and include that instead of including jit-icalls.c.
17809
17810         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17811         OP_X86 opcodes.
17812
17813 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17814
17815         * mini.c: when checking for member accessibility, also check for
17816         friend assemblies and for explicit interface implementations.
17817
17818 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17819
17820         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17821
17822         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17823
17824         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17825         common cases are done first.    
17826
17827         * mini-ops.h: Only define platform specific opcodes on the given platform.
17828
17829         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17830         branch.
17831         
17832 2006-03-14  Martin Baulig  <martin@ximian.com>
17833
17834         Revert Paolo's change from r57348:
17835
17836         * mini.h: don't use gboolean for bitfields.
17837         * mini.c: verifier changes for fields and methods accessibility.
17838
17839 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17840
17841         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17842
17843         * mini-s390x.c: Fix conv_r_un.
17844
17845         * cpu-s390, cpu-s390x.md: Fix lengths.
17846
17847 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17848
17849         * mini.c: nested types have access to all the nesting
17850         levels, not just the enclosing types.
17851
17852 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17853
17854         * mini.c: added a few more verification checks.
17855
17856 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17857
17858         * liveness.c: Merge optimizations from the linear-il branch.
17859
17860 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17861
17862         * mini-ia64.c (emit_call): Add a comment.
17863
17864         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17865
17866         * tramp-ia64.c: Fix some warnings.
17867
17868 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17869
17870         * mini.h: don't use gboolean for bitfields.
17871         * mini.c: verifier changes for fields and methods accessibility.
17872
17873 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17874
17875         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17876         lazy icall wrapper changes.
17877
17878         * dominators.c: Replace all the dominator algorithms with faster
17879         ones from the linear-il branch.
17880
17881         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17882         the mempool.
17883
17884         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17885         common cases are done first.
17886
17887         * mini-amd64.c: Fix some warnings.
17888
17889         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17890         from the mempool.
17891
17892         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17893         added code.
17894
17895         * mini.h: Add a missing prototype.
17896
17897 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17898
17899         * mini.c: Compile icall wrappers lazily.
17900
17901         * mini-codegen.c: Use printf instead of g_print since its much faster.
17902
17903         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17904         function.
17905
17906         * mini.c (optimize_branches): Cache the negative result from 
17907         remove_block_if_useless ().
17908
17909         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17910         Also fix some bblock linking issues.
17911
17912         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17913         assembly files.
17914
17915         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17916
17917         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17918         accessed fields first, for better cache behavior.
17919         
17920 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17921
17922         * mini.c: speedup IList<T> array accesses.
17923
17924 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17925
17926         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17927         inline_costs counter. Fixes #77190.
17928
17929 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17930
17931         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17932         trace messages. Fixes #77706.
17933
17934 2006-03-04  Martin Baulig  <martin@ximian.com>
17935
17936         * tramp-amd64.c, tramp-x86.c
17937         (mono_debugger_create_notification_function): Use
17938         mono_global_codeman_reserve() to allocate a buffer at runtime and
17939         return it.
17940
17941         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17942
17943         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17944         notification function at runtime and then call `initialize' in the
17945         `MONO_DEBUGGER__debugger_info' vtable.
17946
17947 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17948
17949         * iltests.il: Fix a visibility problem.
17950
17951 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17952
17953         * driver.c, mini.c: add hooks for the counters API.
17954
17955 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17956
17957         * driver.c: show disabled options.
17958
17959 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17960
17961         * linear-scan.c: always use cost-driven selection.
17962
17963 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17964
17965         * jit-icalls.c (helper_compile_generic_method): Revert change from
17966         2006-02-24.
17967
17968 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17969
17970         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17971
17972 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * inssel.brg: style fixes, mostly to force the updated monoburg
17975         to run for people using svn.
17976
17977 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * mini.c: match monoburg changes.
17980
17981 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17982
17983         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17984         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17985         declaration in the header file.
17986
17987 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17988
17989         * helpers.c: reduce relocations and mem usage.
17990
17991 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17992
17993         * mini.h, mini-codegen.c: disable logging features if
17994         requested by configure.
17995
17996 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17997
17998         * mini.c: tiny verifier changes.
17999
18000 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18001
18002         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18003         cpu-pentium.md: stack alignment changes for osx/x86,
18004         partially from Geoff Norton <gnorton@customerdna.com>.
18005
18006 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18007
18008         * jit-icalls.c (helper_compile_generic_method): Update to changes
18009         in metadata/class.c.
18010
18011 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18012         
18013         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18014         
18015         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18016         interface calls with large offsets.
18017
18018 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18019
18020         * jit-icalls.c (helper_compile_generic_method): Document the
18021         special-case we depend on so that we can inflate the method twice
18022         with the same context with no bad side-effects.
18023
18024 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18025
18026         * mini-x86.c, mini-amd64.c: fix for case when xen support
18027         is disabled.
18028
18029 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * mini-x86.c, mini-amd64.c: generate code to access tls items
18032         in a faster way for Xen systems.
18033
18034 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18035
18036         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18037         updates and compilation fixes for the OSX/x86 port, mostly from
18038         Geoff Norton <gnorton@customerdna.com>.
18039
18040 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * inssel.brg: faster interface call implementation
18043         to sync with the interface_offsets MonoVTable changes.
18044
18045 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18046
18047         * mini.c: more verification checks.
18048
18049 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18050
18051         * mini.c: added a few more verification checks.
18052
18053 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18054
18055         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18056         facility on the processor and use it if available.
18057
18058 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18059
18060         * driver.c, aot.c, mini.c: throw exception if the IL code is
18061         invalid or unverifiable.
18062
18063 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18064
18065         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18066         m.StructField.
18067
18068 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18069
18070         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18071
18072 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18073
18074         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18075         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18076         handling of instantiated generic valuetypes.
18077
18078 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18079
18080         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18081         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18082         instead.
18083
18084         * generics.2.cs: Revert the nullable reftypes tests.
18085
18086 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18087
18088         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18089         using __builtin_frame_address (1) as it doesn't work in the presence
18090         of optimizations. Hopefully fixes #77273.
18091
18092         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18093         -> generics.cs change as it doesn't work with some automake versions.
18094
18095 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18096
18097         * mini.c: handle systems that sue a different way to
18098         retrieve the stack address of the current thread.
18099
18100 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18101
18102         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18103         it specially in the makefile.
18104
18105         * generics.2.cs: Add tests for nullable reference types.
18106
18107 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18108
18109         * mini.c: always handle the case when mono_jit_init()
18110         is called in a thread different from the main thread,
18111         confusing libgc (bug #77309).
18112
18113 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18114
18115         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18116
18117 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * mini.c: change optimize_branches () to use a single loop
18120         and introduce a new optimization to simplify some range checks.
18121
18122 2006-02-03  Martin Baulig  <martin@ximian.com>
18123
18124         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18125         and merged with debugger_thread_manager_add_thread().
18126         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18127         inform the debugger about the main thread.
18128
18129 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18130
18131         * basic.cs: Add test for div.un/rem.un constant folding.
18132
18133 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18134
18135         * cpu-s390x.md: correct int_xor_imm length
18136
18137 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18138
18139         * generics.2.cs: New test for #77442.
18140
18141         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18142         #77442.
18143
18144 2006-02-02  Martin Baulig  <martin@ximian.com>
18145
18146         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18147         <mono/metadata/mono-debug-debugger.h>   
18148
18149         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18150
18151 2006-02-02  Martin Baulig  <martin@ximian.com>
18152
18153         * debug-debugger.h: New header file for debug-debugger.c.
18154
18155         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18156         function is a separate thread anymore; add support for attaching.
18157
18158 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18159
18160         * tramp-x86.c: Fix a warning.
18161
18162 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18163
18164         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18165         on very large methods.
18166
18167         * aot.c (load_patch_info): Fix a warning.
18168
18169 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18170
18171         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18172         mini-ops.h: alu membase optimizations.
18173
18174 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18175
18176         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18177         to speedup StringBuilder.
18178
18179 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18180
18181         * dominators.c (mono_compute_natural_loops): Fix detection of
18182         loop body start blocks.
18183
18184         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18185
18186 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18187
18188         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18189         #75145.
18190
18191 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18192
18193         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18194
18195 2006-01-25  Martin Baulig  <martin@ximian.com>
18196
18197         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18198         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18199         started to cleanup this file a little bit.
18200
18201 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18202
18203         * mini.c: optimize a codepath frequently happening in generics code.
18204
18205 2006-01-23  Martin Baulig  <martin@ximian.com>
18206
18207         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18208
18209         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18210         functions directly.
18211
18212         * driver.c: debug-debugger.c is only available if
18213         `MONO_DEBUGGER_SUPPORTED' is defined.   
18214
18215 2006-01-23  Martin Baulig  <martin@ximian.com>
18216
18217         * debug-debugger.c: Only enable this on platforms where the Mono
18218         Debugger is working (x86 and x86_64).
18219
18220 2006-01-21  Martin Baulig  <martin@ximian.com>
18221
18222         The Mono Debugger is now using the normal `mono' instead of the
18223         `mono-debugger-mini-wrapper' when executing managed code.
18224
18225         * debug-debugger.c: New file; previously known as
18226         debugger/wrapper/wrapper.c.
18227
18228         * debug-mini.c (mono_init_debugger): Removed.
18229
18230         * driver.c (mono_main): Added new `--inside-mdb' command line
18231         argument which is used when running inside the debugger.
18232
18233 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18234
18235         * liveness.c (mono_analyze_liveness): Remove some unused data
18236         structures.
18237
18238 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18239
18240         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18241
18242 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18243
18244         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18245         depends on implementation details of monobitset.
18246
18247         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18248         Fixes #77271.
18249
18250 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18251
18252         * liveness.c: Update after monobitset changes.
18253
18254 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18255
18256         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18257
18258 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18259
18260         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18261
18262         * mini-s390x.c: Remove warning messages.
18263
18264 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18265
18266         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18267
18268 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18269
18270         * generics.2.cs: Add ldelem/stelem_any test.
18271
18272 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18273
18274         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18275
18276 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18277
18278         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18279         
18280 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18281
18282         * generics.2.cs: Reenable vtype tests.
18283
18284         * inssel-x86.brg: Remove an icorrect valuetype rule.
18285
18286 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18287
18288         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18289         initial support for OP_ABS.
18290
18291 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18292
18293         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18294
18295 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18296
18297         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18298         conversion and implement LADD/LSUB.
18299
18300         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18301         architectures.
18302
18303 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18304
18305         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18306
18307         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18308         architectures.
18309
18310 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18311
18312         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18313         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18314         (stack walk problem).
18315
18316 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18317
18318         * aot.c (mono_aot_load_method): Fix a warning.
18319
18320 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18321
18322         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18323
18324 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18325
18326         * iltests.il: Add test for #77148.
18327
18328         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18329         #77148.
18330
18331 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18332
18333         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18334
18335 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18336
18337         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18338         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18339
18340         * basic-long.cs: Add lconv-to-r4/r8 tests.
18341
18342 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18343
18344         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18345
18346         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18347         here as on other archs.
18348
18349 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18350
18351         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18352
18353 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18354
18355         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18356         
18357         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18358
18359         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18360         instrument_prolog; Add memory_barrier instruction.
18361
18362 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18363
18364         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18365
18366 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18367
18368         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18369
18370         * aliasing.c inssel.brg: Fix warnings.
18371
18372         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18373         could skip initialization of some parts of memory.
18374
18375         * mini.c mini-ia64.c: Fix warnings.
18376
18377         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18378
18379 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18380
18381         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18382         a crash seen on sparc.
18383
18384         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18385         
18386         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18387
18388 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18389
18390         * mini-ops.h: Add s390_backchain instruction
18391
18392         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18393
18394         * cpu-s390.md: Add s390_backchain instruction
18395
18396         * mini-s390.c: Significant ABI changes
18397
18398         * mini-s390.h: Cater for zero length structures
18399
18400 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18401
18402         * mini-s390.c: ABI fixes
18403
18404         * inssel-s390.brg: Remove debug statements
18405
18406         * cpu-s390.md: Fix length of ATOMIC_xx operations
18407
18408 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18409
18410         * basic-float.cs: Add float<->long conversion tests.
18411
18412 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18413
18414         * mini-s390.c: Fix LOCALLOC processing.
18415
18416         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18417
18418 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18419
18420         * iltests.il: Add tests for some opcodes not covered by the other
18421         tests.
18422
18423 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18424
18425         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18426         register loading for Tail processing; Correct trace output.
18427
18428         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18429
18430         * cpu-s390.md: Correct size of jmp instruction. 
18431
18432 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18433
18434         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18435
18436 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18437
18438         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18439           Bring s390 up to current level.
18440
18441 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18442
18443         * generics.2.cs: Disable the newly added tests as they do not work yet.
18444         
18445         * generics.2.cs: Add valuetype tests.
18446
18447 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18448
18449         * basic-long.cs: Add i4->u8 test.
18450
18451         * objects.cs: Add tests for JIT intrinsic.
18452
18453         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18454         optimizations lost by a mistake.
18455
18456 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * basic-long.cs: Remove a test moved to objects.cs.
18459
18460         * arrays.cs: Add more array tests.
18461
18462 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18463
18464         * arrays.cs: Add new tests for multi-dimensional arrays.
18465
18466 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18467
18468         * Makefile.am (test_sources2): Add generics.2.cs.
18469         (EXTRA_DIST): Add test_sources2.
18470
18471 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18472
18473         Support for boxing and unboxing nullable types as well as the
18474         isinst operation on nullables, per the CLI ammendment.
18475
18476         * inssel.brg (CEE_ISINST): Special case for nullable
18477
18478         * mini.c (handle_unbox_nullable): new method
18479         (handle_box): Special case for nullable types
18480         (mono_method_to_ir): Call handle_unbox_nullable in correct
18481         places.
18482
18483         * generics.2.cs: New test suite
18484
18485         * Makefile.am: Support for regression tests with generics.
18486
18487 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18488
18489         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18490         allocated to registers. Fixes #76800.
18491
18492 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18493
18494         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18495
18496 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18497
18498         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18499         of platforms.
18500
18501 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18502
18503         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18504         objects.cs.
18505
18506         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18507         
18508         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18509 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18510
18511         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18512         single precision before storing to a single precision location.
18513
18514 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18515
18516         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18517
18518 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18519
18520         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18521         correct files.
18522
18523         * basic.cs: Remove test_0_byte_compares test which was moved to
18524         objects.cs a long time ago.
18525
18526 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18527
18528         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18529
18530 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18533         handlers are called.
18534
18535         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18536         throwing code.
18537
18538          * mini-ia64.c: Add support for the throw->branch exception 
18539         optimization.   
18540
18541         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18542
18543 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18544
18545         * mini.c: Enabled "fastpath" deadce :-)
18546         
18547 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18548
18549         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18550         alias analysis pass to support it.
18551         * mini.h: Likewise.
18552         * ssa.c: Likewise.
18553         * liveness.c: Likewise (liveness computation can use aliasing
18554         information to be more accurate).
18555         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18556         moreover made so that "--compile-all" uses the given optimization
18557         flags and not the default ones.
18558         * aliasing.c: Alias analysis (new file).
18559         * aliasing.h: Likewise.
18560         * Makefile.am: added "aliasing.c" and "aliasing.h".
18561         
18562 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18565         OP_L opcodes.
18566
18567 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18568
18569         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18570         fp >= end_of_stack exit condition, as it is not needed, and it might
18571         become true for fp eliminated frames.
18572
18573 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18574
18575         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18576         coded offsets.
18577
18578 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18579
18580         * mini-arm.c: fixed alignment of doubles/longs to match
18581         the C ABI (bug #76635).
18582
18583 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18584
18585         * aot.c: fix compilation with --enable-minimal=aot.
18586
18587 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18588
18589         * mini-arm.c: fixed compatibility with the new
18590         floating point emulator package for compares.
18591
18592 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18593
18594         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18595
18596 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * mini-exceptions.c (print_stack_frame): Output to stderr.
18599         (mono_handle_native_sigsegv): Ditto.
18600
18601 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18602
18603         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18604         OP_LCONV_TO_OVF_I implementation.
18605
18606         * mini-amd64.c: Add support for the throw->branch exception 
18607         optimization.
18608
18609         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18610         when the catch clause catches a more general exception, i.e. Object.
18611
18612 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18613
18614         * cpu-ia64.md: Remove unused opcodes.
18615
18616         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18617         specific defines for architectures defining USE_SIGACTION.
18618
18619         * mini-ia64.c: Fix some warnings.
18620
18621         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18622         version seemed to skip a frame.
18623
18624 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18627         only calls which are made to native code use this flag.
18628
18629 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18632         varargs methods as well.
18633         
18634         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18635         which have save_lmf set. Reorganize methods prologs a bit.
18636
18637         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18638         debugger to the proper place.
18639
18640 2005-10-29  Martin Baulig  <martin@ximian.com>
18641
18642         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18643         when running inside the debugger until the debugger has support
18644         for it.
18645
18646 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18647
18648         * mini.h: Fix a warning.
18649
18650 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18651
18652         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18653         we expose publicly, this returns the string.
18654
18655 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18658         with fp elimination.
18659
18660 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18661
18662         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18663         native stacktrace using the glibc 'backtrace' function if available.
18664
18665 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18666
18667         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18668
18669         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18670         handle SIGSEGVs received while in native code.
18671
18672         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18673         code, call mono_handle_native_sigsegv which will abort the runtime
18674         after printing some diagnostics, instead of converting it into a
18675         confusing NullReferenceException.
18676
18677 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18678
18679         * cpu-pentium.md: Remove unused opcodes.
18680
18681 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * mini-amd64.h (MonoLMF): Add rsp field.
18684
18685         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18686         the lmf too.
18687
18688 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18689
18690         * mini-codegen.c (get_register_spilling): Fix some warnings.
18691
18692 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18695         elimination during exception handling. Enable fp elimination by
18696         default.
18697
18698         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18699         elimination.
18700
18701 2005-10-16  Martin Baulig  <martin@ximian.com>
18702
18703         * mini-exceptions.c
18704         (mono_debugger_run_finally): New public method for the debugger.
18705
18706 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18707
18708         * debug-mini.c (mono_debug_init_method): Fix warning.
18709
18710         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18711         the 'exname' parameter const to fix some warnings.
18712
18713 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18716         introduced by the previous patch.
18717
18718 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18719
18720         * basic-float.cs: Add test for precision of float arithmetic.
18721
18722         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18723         when loading/storing single values from/to memory.
18724
18725         * mini.c (mono_jit_compile_method_with_opt): Create the function
18726         pointers in the correct domain.
18727
18728 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18729
18730         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18731         introduced by previous patch.
18732         
18733         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18734         when out_filter_idx is NULL.
18735
18736         * mini-exceptions.c: Don't run filter clauses twice during exception
18737         handling. Fixes #75755.
18738
18739 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18740
18741         * aot.c: Add support for ldflda wrappers.
18742
18743         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18744         #75902.
18745
18746 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18747
18748         * mini.c, mini.h: do not consider exception handlers blocks when
18749         setting up interface variables.
18750
18751 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18752
18753         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18754
18755 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18756
18757         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18758         causes a regression.
18759
18760         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18761
18762 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18765         of the OP_P definitions.
18766
18767         * TODO: Add a proposal for dealing with the CEE/OP mess.
18768
18769         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18770         optimizations from the x86 port.
18771
18772         * cpu-amd64.md: Ditto.
18773
18774         * basic.cs basic-long.cs: Add tests.
18775
18776 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18777
18778         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18779         Patrik Torstensson's implementation of my exception-handling
18780         optimization idea, when the exception object is not used
18781         (bug #62150).
18782
18783 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18784
18785         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18786         of the mul_imm optimizations from the old jit.
18787
18788 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18789
18790         * mini.c, liveness.c: patch by Patrik Torstensson and
18791         Zoltan Varga to improve performance in methods with
18792         exception clauses.
18793
18794 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18795
18796         * driver.c: Remove 'Globalization' entry from --version.
18797
18798 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18801         there is a profiler interested in JIT events.
18802
18803         * aot.c: Load profile files produced by the AOT profiling module, and
18804         reorder methods based on the profiling info. Add a 'method_order' table
18805         to the AOT file to make mono_aot_find_jit_info work with the reordered
18806         methods.
18807
18808         * mini.h: Bump AOT file version info.
18809
18810 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18811
18812         * mini-arm.h: work around what looks like a gcc bug when optimizations
18813         are enabled.
18814
18815 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18816
18817         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18818         conditionals.  Use ...
18819         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18820
18821 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18824         to determine the amount of memory to copy when passing valuetypes.
18825
18826         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18827         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18828
18829 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18830
18831         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18832         information about aot.
18833
18834 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18835
18836         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18837         macros. This will allow a deadlock debugger to easily be plugged
18838         in.
18839
18840 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18841
18842         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18843
18844 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18845
18846         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18847         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18848         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18849         ($(arch_built)) [CROSS_COMPILING]: Error out.
18850
18851 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18852
18853         * aot.c: Add support for the no_special_static flag for classes.
18854
18855 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18856
18857         * Reapply reverted patches.
18858
18859         * *: Revert r50174 as well.
18860
18861         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18862
18863 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18866
18867 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18868
18869         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18870         part of the SIG_HANDLER_SIGNATURE.  
18871
18872 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18873
18874         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18875         statistics.
18876
18877         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18878         introduced by previous patch.
18879
18880 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18881
18882         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18883         saved registers too.
18884
18885         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18886         upon the information returned by get_call_info ().
18887         
18888         * mini-x86.c (add_float): Fix stack size calculation.
18889         (mono_arch_call_opcode): Rewrite this so it works based up the
18890         information returned by get_call_info ().
18891         (mono_arch_get_this_vret_args): Ditto.
18892
18893 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18896         in cinfo to determine the registers which need to be used.
18897
18898 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18899
18900         * driver.c (mono_main): Add --server and --desktop flags. 
18901
18902 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18903
18904         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18905         registers as global registers.
18906
18907         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18908         longer needed with the new register allocator.
18909
18910         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18911
18912         * cpu-ia64.md: Remove unused opcodes.
18913         
18914         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18915         
18916 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * cpu-amd64.md: Remove unused opcodes.
18919
18920         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18921         needed with the new register allocator.
18922
18923         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18924         reg-reg moves.
18925
18926 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18927
18928         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18929
18930 2005-09-16  Martin Baulig  <martin@ximian.com>
18931
18932         * exceptions-amd64.c
18933         (throw_exception): Don't call mono_debugger_throw_exception() if
18934         we're a rethrow - see the FIXME in the code.
18935
18936 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18937
18938         * mini.c (mono_init_exceptions): This only works on some architectures.
18939         
18940 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18941
18942         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18943         on ia64.
18944
18945         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18946
18947         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18948         now in mini-exceptions.c.
18949
18950 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18951
18952         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18953         now in mini-exceptions.c.
18954
18955 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18956
18957         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18958         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18959
18960         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18961         code into mini-exceptions.c. Add some assertions to it.
18962
18963 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18964
18965         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18966         (<software@solmersa.com>). Fix as errors on windows.
18967
18968 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18971         method info into the LMF.
18972
18973 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18974         
18975         * mini-ia64.c: Add proper unwind info for method epilogs.
18976
18977         * exceptions-ia64.c: Add some code to help debugging.
18978         
18979         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18980
18981         * mini-exceptions.c: Fix warning.
18982
18983 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * mini.c: Really fix build.
18986
18987         * mini-x86.c mini-amd64.c: Fix build.
18988
18989 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18990
18991         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18992
18993         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18994         some Interlocked methods as intrinsics.
18995
18996         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18997         for Thread methods as well.
18998
18999         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
19000
19001         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
19002
19003         * mini-ia64.c mini-x86.c mini-amd64.c 
19004         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19005         OP_MEMORY_BARRIER.
19006         
19007         * mini.c (mono_init_exceptions): Fix build breakage.
19008
19009 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19010
19011         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19012         of instructions. Use the new ia64_unw_op macros for emitting unwind
19013         info.
19014
19015         * mini.c (mono_init_exceptions): Initialize exception handling
19016         related trampolines at startup.
19017
19018 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19019
19020         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19021
19022 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19023
19024         * mini.c: Handle type loading errors gracefully during compilation and
19025         throw the appropriate exception.
19026
19027 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19028
19029         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19030         for the mono binary.
19031
19032 2005-09-09  Martin Baulig  <martin@ximian.com>
19033
19034         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19035         the release.
19036
19037 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19038
19039         * mini-arm.h: use emulation for conv.r.un for the release.
19040
19041 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19042
19043         * mini-arm.c, objects.cs: more fixes and tests for them.
19044
19045 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19046
19047         * mini-arm.c: align structures to at least 4 bytes to be able
19048         to keep our current optimized memcpy.
19049
19050 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19051
19052         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19053
19054 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19055
19056         * mini.c: ignore SIGPIPE.
19057
19058 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19059
19060         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19061
19062         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19063
19064 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19065
19066         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19067
19068 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19069
19070         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19071         exception handling support.
19072         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19073         patch by Brian Koropoff <briank@marakicorp.com>).
19074
19075 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19076
19077         * mini.c: revert another 'optimization' which breaks when
19078         items on the eval stack need to be saved at a basic block end
19079         (bug #75940).
19080
19081 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19082
19083         * jit-icalls.c: for arrays, ensure we always provide
19084         lower bounds.
19085
19086 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19087
19088         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19089         
19090         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19091
19092 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19093
19094         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19095         arguments in their original register.
19096
19097 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19098
19099         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19100         memset/memcpy.
19101
19102         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19103         when ssapre is enabled.
19104
19105         * inssel-long.brg: Fix bug in previous patch.
19106
19107         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19108         multiplication by a constant.
19109
19110 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19111
19112         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19113         icc.
19114
19115         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19116         saving registers.
19117
19118 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19119
19120         * inssel-arm.brg: apply changes tested by Brian Koropoff
19121         <briank@marakicorp.com>.
19122
19123 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19124
19125         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19126         
19127 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19128
19129         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19130         to the same register if dreg is just a base register.
19131         (print_ins): Improve printing of membase opcodes.
19132
19133         * inssel-x86.brg: Add optimized ldind(reg) rules.
19134
19135         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19136
19137 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19138
19139         * mini.c: when running under valgrind, set the stack bottom for
19140         the GC at the actual approximate stack for the app (fixes running
19141         mono with valgrind).
19142
19143 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19144
19145         * mini.c: do no break at the first valuetype to init found
19146         (fixes bug #75791).
19147
19148 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19149
19150         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19151
19152 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19153
19154         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19155
19156 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19157
19158         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19159
19160 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19163
19164         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19165         code.
19166
19167         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19168         code.
19169
19170         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19171         methods.
19172
19173 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19174
19175         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19176
19177 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19178
19179         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19180         in the tail recursion optimization.
19181
19182         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19183         debug info into the assembly file.
19184
19185         * iltests.il: Add test for filter regions.
19186
19187         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19188         initial stack of filter regions. Fixes #75755.
19189
19190 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19191
19192         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19193         stack requirements.
19194
19195 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19196
19197         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19198         the check for an already compiled method on non-ia64 platforms.
19199         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19200         proper domain.
19201
19202         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19203
19204         * inssel-x86.brg: Add some optimized call rules.
19205
19206 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19207
19208         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19209         method here.
19210
19211         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19212         mono_arch_patch_delegate_trampoline.
19213
19214         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19215
19216         * mini-trampolines.c: Fix build.
19217
19218         * mini-amd64.h: Add delegate trampolines.
19219
19220         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19221
19222         * inssel-amd64.brg: Add optimized call rules.
19223         
19224         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19225
19226         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19227
19228 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19231         change.
19232
19233         * mini-ia64.c: Remove LMF fixmes.
19234
19235         * mini-ia64.h: Remove most fields from LMF.
19236
19237         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19238
19239         * mini-trampolines.c: Add support for IA64 function descriptors.
19240
19241         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19242         for IA64 function descriptors.
19243
19244 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19245
19246         * tramp-arm.c: patch the vtable for virtual calls. Added
19247         support code to register/unregister the LMF.
19248         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19249         more LMF work.
19250
19251 2005-08-19  Dick Porter  <dick@ximian.com>
19252
19253         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19254         bit value if needed.
19255
19256 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19257
19258         * mini.c (mini_get_method): Move handling of wrapper data here.
19259
19260         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19261
19262         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19263         virtual.
19264
19265         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19266         bblock->code does not remain empty.
19267
19268 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * arrays.cs: Add regression test for #75832.
19271
19272         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19273         rules. Fixes #75832.
19274
19275         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19276         instruction scheduling.
19277
19278 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19281
19282 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19285
19286         * mini-codegen.c: Fix VC build.
19287
19288         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19289
19290 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19291
19292         * mini.h: fix signature for mono_register_opcode_emulation.
19293
19294 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19295
19296         * mini.c: Get rid of most of the helper_sig_... constants using
19297         mono_create_icall_signature ().
19298
19299 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19300
19301         * jit-icalls.c (helper_ldstr): New helper function.
19302
19303         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19304
19305         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19306         throw, load the string using a helper call instead of creating a string object.
19307
19308         * aot.c: Update after LDSTR changes.
19309
19310         * mini.h: Bump AOT file version.
19311         
19312         * aot.c: Save class size info into the AOT file. Print more statistics during
19313         compilation.
19314
19315         * mini.h: Bump AOT file version.
19316
19317         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19318         ordering of disasm cases. Fixes #74957.
19319
19320 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19321
19322         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19323         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19324         the generic code needed for the ARM port.
19325
19326 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19327
19328         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19329         inssel-arm.brg: more ARM features and fixes.
19330
19331 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19332
19333         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19334         ARM port work in progress.
19335
19336 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19339
19340         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19341
19342         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19343
19344         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19345
19346         * *-ia64.*: Ongoing IA64 work.
19347         
19348         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19349
19350 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * TODO: Remove out-of-data todo stuff.
19353
19354         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19355         dead code.
19356
19357         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19358
19359         * mini.h: Bump corlib version.
19360
19361 2005-07-27  Martin Baulig  <martin@ximian.com>
19362
19363         * mini-codegen.c
19364         (create_copy_ins): Added `const unsigned char *ip' argument; set
19365         `copy->cil_code' from it.
19366
19367 2005-07-27  Martin Baulig  <martin@ximian.com>
19368
19369         * mini-exceptions.c (mono_handle_exception): Don't call
19370         mono_debugger_handle_exception() for filters.
19371
19372 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19375         as well.
19376
19377 2005-07-26  Martin Baulig  <martin@ximian.com>
19378
19379         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19380
19381         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19382         helper_compile_generic_method() if the method is actually virtual
19383         and non-final.
19384
19385 2005-07-26  Martin Baulig  <martin@ximian.com>
19386
19387         * mini.c
19388         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19389         public; this is now accessed directly by the debugger.
19390         (mono_generic_trampoline_code): Removed.
19391
19392         * debug-mini.c
19393         (mono_debug_init_method): Also add interncalls and wrappers.
19394
19395 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19398
19399 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19402
19403 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19406
19407 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19410         getting TLS offsets on AMD64 too.
19411
19412 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19413
19414         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19415
19416 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19417
19418         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19419         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19420
19421 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19422
19423         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19424
19425         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19426         to mini.c.
19427
19428         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19429         mono_sparc_is_virtual_call ().
19430         
19431         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19432
19433         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19434         trampoline parameters.
19435
19436         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19437         
19438         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19439         to mono_arch_get_vcall_slot_addr.
19440
19441         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19442         trampoline code.
19443
19444         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19445
19446 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19447
19448         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19449
19450 2005-07-19  Martin Baulig  <martin@ximian.com>
19451
19452         * exceptions-amd64.c (throw_exception): Call
19453         mono_debugger_throw_exception() here like we're doing it on i386.
19454
19455 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19456
19457         * mini-ia64.c: Add optimized TLS access support.
19458
19459 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19460
19461         * mini-exceptions.c: Ongoing IA64 work.
19462
19463         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19464
19465         * mini.c: Use the default optimization set when embedding. Fixes
19466         #75194.
19467
19468 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19471         of trampolines to a separate file.
19472
19473         * mini-trampolines.c: New file.
19474
19475         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19476         separate file.
19477         
19478         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19479         amd64/ia64 code.
19480
19481         * mini-codegen.c: Fix cygwin build.
19482
19483 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19484
19485         * mini.c: Add some minor changes needed by the IA64 port.
19486
19487         * *-ia64.*: Ongoing IA64 work.
19488
19489 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19492         trampolines into arch-independent and arch-dependent parts.
19493
19494         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19495
19496 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19499
19500         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19501         the xp-regalloc-branch for amd64.
19502
19503         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19504         xp-regalloc-branch for x86.
19505
19506 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19507
19508         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19509
19510 2005-07-06  Martin Baulig  <martin@ximian.com>
19511
19512         * mini.c
19513         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19514         (mono_jit_runtime_invoke): Likewise.
19515
19516 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19519         on x86 too.
19520         
19521         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19522         without loading their metadata. Reorganize the file format so exception handling+
19523         debug info is kept separate from normal method info. Create MonoJitInfo 
19524         structures for methods lazily.
19525
19526         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19527         loading metadata.
19528         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19529
19530         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19531
19532         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19533         in AOT code.
19534
19535         * mini.h: Bump AOT file version.
19536
19537 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19538
19539         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19540
19541 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19542
19543         * Makefile.am (check-local): Call semdel-wrapper.
19544
19545 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * mini-x86.c: Revert the last change as it seems to break the build..
19548
19549 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19550
19551         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19552         
19553         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19554
19555 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19556
19557         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19558         outside of the macro, so strange stuff doesn't happen with gcc4
19559         (NEW_AOTCONST_TOKEN): Likewise.
19560
19561 2005-06-28  Martin Baulig  <martin@ximian.com>
19562
19563         * mini.c (mini_class_is_system_array): New static method; use this
19564         instead of `klass->parent == mono_defaults.array_class' everywhere
19565         since this also works for the new generic array class.
19566
19567 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19568
19569         * inssel.brg: Remove warnings.
19570
19571 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19572
19573         * mini-ia64.c: Ongoing IA64 work.
19574
19575         * basic-float.cs: Add float->i1 conversion test.
19576
19577         * iltests.il: Add conv.u4 test.
19578
19579 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * inssel-long.brg: Fix bug caused by last change.
19582
19583 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19584
19585         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19586         BSDs.  Allows the x86 JIT to work on OSX86
19587
19588 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19591         u4->i8 conversion.
19592
19593         * mini-ia64.c: Ongoing IA64 work.
19594
19595 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * mini-ia64.c: Ongoing IA64 work.
19598
19599         * driver.c: Clean up jit_code_hash as well when using --regression.
19600
19601         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19602
19603         * basic-long.cs: Add tests for long->u4 conversion.
19604
19605 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19606
19607         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19608         that we do not depend on undefined C behavior: the order stuff
19609         gets evaluated within an expression. Fixes mono when compiled on
19610         GCC 4.
19611
19612 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * *-ia64.*: Ongoing IA64 work.
19615
19616         * aot.c: Lower memory usage while loading AOT methods.
19617
19618         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19619
19620         * mini.h: Bump AOT file format version.
19621
19622 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19625
19626 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19627
19628         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19629         not on callee assembly). Fixed some comments.
19630
19631 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19634         it gets proper disassembly.
19635         (emit_method_info): Remove some dead code.
19636
19637         * mini.c (mini_method_compile): Allways allocate the GOT var in
19638         mono_method_to_ir for emulating opcodes.
19639
19640 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19643         before freeing the code memory. Fixes #74990.
19644
19645         * objects.cs: Add regression test for #74992.
19646
19647         * liveness.c: Extend live ranges of arguments to the beginning of the
19648         method. Fixes #74992.
19649
19650         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19651         so it points into the faulting instruction.
19652
19653 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19654
19655         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19656
19657         * *-ia64.*: Ongoing IA64 work.
19658
19659         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19660
19661 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19664
19665         * *-ia64.*: Ongoing IA64 work.
19666
19667 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * basic-long.cs: Add tests for add/sub.ovf.
19670
19671         * basic.cs: Add tests for sub.ovf.
19672
19673         * *-ia64.*: Ongoing IA64 work.
19674
19675 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * *-ia64.*: Ongoing IA64 work.
19678
19679         * basic.cs: Add conv.ovf.i4.un test.
19680
19681 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19682
19683         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19684         
19685 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19686
19687         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19688
19689 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * *-ia64.*: Ongoing IA64 work.
19692
19693 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19694
19695         * trace.[ch]:
19696         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19697
19698 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19701
19702 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19703
19704         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19705
19706         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19707         of a call is callable by a near call.
19708
19709 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * mini-ia64.c: Ongoing IA64 work.
19712
19713 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19714
19715         * genmdesc.c: Make the generated array non-static.
19716
19717         * inssel-long.brg: Fix LSHR_IMM rule.
19718
19719         * *-ia64.*: Ongoing IA64 work.
19720
19721         * *-ia64.*: Ongoing IA64 work.
19722
19723 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * *-ia64.*: Ongoing IA64 work.
19726
19727         * *-ia64.*: Ongoing IA64 work.
19728         
19729         * mini-ia64.c: Ongoing IA64 work.
19730
19731         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19732
19733 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19736         
19737         * objects.cs basic-long.cs: Move some tests to objects.cs.
19738
19739 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * *-ia64.*: Ongoing IA64 work.
19742
19743         * iltests.il: Add a new test.
19744
19745         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19746         newobj. Fixes #75042.
19747
19748 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * *-ia64.*: Ongoing IA64 work.
19751         
19752         * *-ia64.*: Ongoing IA64 work.
19753         
19754         * *-ia64.*: Ongoing IA64 work.
19755
19756         * basic.cs objects.cs: Move tests accessing static variables as well.
19757
19758         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19759
19760 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19761
19762         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19763
19764         * driver.c: Always print failed tests.
19765
19766         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19767         frame pointer.
19768
19769         * *ia64*: Ongoing IA64 work.
19770
19771 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * basic.cs: Add tests for add.ovf. Fix warnings.
19774
19775 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19776
19777         * driver.c (mono_main): Avoid crash if no argument is passed to
19778         --break;  Do not use g_error, but f_printf.   And fix all other
19779         ocurrences of the same crash.
19780
19781 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19784         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19785         Fixes #74742.
19786
19787 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19788
19789         * *-ia64.*: Add beginnings of IA64 backend.
19790
19791         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19792
19793 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19796         Fixes #74925.
19797
19798         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19799
19800         * mini-amd64.c: Fix a warning.
19801
19802 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19805         in float_neg. Fixes #74897.
19806
19807         * mini-amd64.c (emit_call): Fix another near call bug.
19808
19809 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19810
19811         * declsec.c: Keep the appdomain information in the structure. Added a 
19812         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19813         value gets overwritten).
19814         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19815         an MonoAppDomain member to MonoSecurityFrame.
19816         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19817         used in the stack walk. Now use a MonoArray which grow (double) when
19818         it gets full.
19819
19820 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19821
19822         * mini.c: Re-enabled runtime cleanup, since running threads should
19823         now properly stop when exiting.
19824
19825 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * mini-codegen.c: New file contaning the arch-independent local
19828         register allocator. Not used by any architectures yet.
19829
19830         * mini.h linear-scan.c: Merge some changes from the 
19831         mini-xp-local-regalloc branch.
19832
19833 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19834
19835         * mini-amd64.c (emit_call): Fix calls to native functions when the
19836         runtime is compiled as a shared library. Fixes #74756.
19837
19838         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19839         on a literal field. Fixes #74751.
19840
19841 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19842
19843         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19844
19845 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * objects.cs: Add missing null casting test.
19848
19849 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19852         in wrapper methods. Also rename 'address' variable to 'offset'.
19853
19854 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19857         warnings.
19858         
19859         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19860
19861         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19862         work on windows.
19863
19864 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19865
19866         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19867
19868 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19869
19870         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19871         just the last bytes.
19872
19873 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * aot.c (mono_compile_assembly): Fix warning.
19876
19877         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19878         by the _MSC_VER stuff.
19879
19880 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19881
19882         * inssel-long.brg: Fix #74588.
19883
19884         * cpu-amd64.md: Fix #74591.
19885
19886         * iltests.il: Add new regression tests.
19887
19888 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19891         valuetype.
19892
19893 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19894
19895         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19896
19897         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19898         from Bill Middleton <flashdict@gmail.com>.
19899
19900 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * arrays.cs: Add new regression test. Fix warnings.
19903
19904 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19907         and leakage in CKFINITE.
19908
19909         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19910         this to a null op since it is called on amd64 too.
19911
19912         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19913
19914         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19915         body since this is not used on amd64.
19916         
19917         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19918
19919         * mini-amd64.c: Remove obsolete fixmes.
19920
19921         * mini.c (print_method_from_ip): Fix debugging support.
19922
19923 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19924
19925         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19926         so that expressions that don't give much gain are not reduced.
19927         * ssapre.h: Likewise.
19928
19929 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19932
19933         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19934
19935         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19936
19937 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19938
19939         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19940
19941         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19942
19943 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19946         stack touching.
19947
19948         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19949
19950         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19951
19952         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19953
19954         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19955         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19956
19957         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19958
19959         * mini-x86.c: Fix up stack overflow handling.   
19960
19961         * exceptions.cs: Add new regression test.
19962
19963 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19966         mono_jit_thread_attach.
19967
19968         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19969
19970 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19971
19972         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19973         avoid calling constructors using callvirt.
19974
19975         * inssel.brg: Fix #74073.
19976
19977 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19978
19979         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19980         compilation with non-GCC compilers.
19981         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19982         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19983
19984 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19985
19986         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19987         klass->interface_offsets (will likely fix bug#74073).
19988
19989 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19990
19991         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19992
19993 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19994
19995         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19996         to amd64_div_reg_size ().
19997         
19998         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19999
20000 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20003
20004 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20005
20006         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20007
20008 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20009
20010         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20011         
20012         * mini.c (mono_precompile_assembly): Load and precompile referenced
20013         assemblies as well. Fixes #74015.
20014
20015 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20018
20019 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20020
20021         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20022         a lot of checks and (anyway) permissions cannot work until corlib is 
20023         loaded.
20024
20025 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20026
20027         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20028
20029 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20030
20031         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20032         calls (fixes bug#72824).
20033
20034 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20035
20036         * mini.c: fix tail recursion elimination (see test in bug#73936).
20037
20038 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20041         some fp functions in sse2 mode.
20042
20043 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20044
20045         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20046
20047 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20048
20049         * mini.h mini.c: Add mono_get_jit_tls_key ().
20050
20051         * mini-x86.c: Enable fast TLS support on windows.
20052
20053 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20054
20055         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20056         * mini.c: Check for p/invoke method when generating code. If a
20057         p/invoke method, or it's class, isn't decorated with [Suppress
20058         UnmanagedCodeSecurity] then generate code to call System.Security.
20059         UnmanagedDemand (only if the security manager is active).
20060
20061 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20064         last change as it seems to cause strange crashes.
20065         
20066 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20067
20068         * *.c: handle unsafe function pointers where needed.
20069
20070 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * mini.c (mono_jit_free_method): Remove the fixme too.
20073
20074 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20075
20076         * mini.c: As discussed, make the code actually free the delegate
20077         thunk now, to enable the debugging of delegate problems, use
20078         MONO_DEBUG=1 when running Mono. 
20079
20080         This takes also care of parts of the leaks as seen by Joe.
20081
20082 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20085         thread_tls_offset calculation.
20086
20087 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20088
20089         * declsec.c: Reworked linkdemand checks for icall. The previous code
20090         was using the declaration code (untrusted) and didn't work as expected
20091         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20092         specific case.
20093
20094 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * iltests.il: Add new localloc test.
20097
20098         * mini-amd64.c: Handle large stack allocations the same way as on
20099         windows if stack overflow handling is working.
20100         
20101         * mini-amd64.c: Allocate the signal stack using mmap.
20102
20103         * mini.c (sigsegv_signal_handler): Fix reading of context.
20104
20105         * mini-exceptions.c: Fix up stack overflow handling.
20106
20107         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20108
20109         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20110
20111         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20112
20113         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20114
20115         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20116         tramp_init functions as they are no longer needed.
20117
20118 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20119
20120         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20121         
20122         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20123
20124         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20125         
20126         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20127         support that now.
20128
20129         * mini-ops.h: Add OP_LMUL_IMM.
20130
20131         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20132         long mul/div opcodes as intrinsic.
20133
20134         * mini-amd64.c (emit_call): Handle the case when the callee might be
20135         an AOT method.
20136
20137 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20140         extra safe.
20141         
20142         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20143
20144         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20145
20146 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20147
20148         * mini.c (mono_codegen): Don't leak here, to help people running
20149         monogrind.
20150
20151 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20154         conversions in sse2 mode.
20155
20156         * basic-float.cs: Add regression test.
20157         
20158         * mini-amd64.c: Reenable sse2.
20159
20160 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20163
20164 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20165
20166         * driver.c: Copyright text should include 2005.
20167         
20168 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20169
20170         * cpu-amd64.md (load_membase): Fix more max lengths.
20171
20172 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20173
20174         * cpu-amd64.md (load_membase): Fix max length.
20175
20176         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20177
20178         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20179
20180         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20181         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20182
20183         * basic-float.cs: Add rounding regression test.
20184
20185         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20186
20187 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20188
20189         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20190         structures in registers for pinvoke wrappers.
20191
20192 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20193
20194         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20195
20196 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20199         wrapper to mono_jit_thread_attach.
20200
20201         * mini.c (mini_jit_thread_attach): New jit icall.
20202
20203         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20204         native->managed wrappers.
20205
20206         * exceptions.cs: Add new regression test.
20207
20208         * mini.c (optimize_branches): Check regions in the cbranch to throw
20209         block case as well. Fixes #73242.
20210
20211 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20212
20213         * mini.c: thread safety fixes.
20214
20215 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20216
20217         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20218         patching stuff, since delegates use jump trampolines so there is
20219         no caller.
20220
20221         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20222         jump trampolines.
20223         
20224         * tramp-amd64.c: Fix build.
20225
20226         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20227         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20228
20229         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20230         Rename this to mono_arch....
20231         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20232
20233         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20234
20235         * mini-amd64.c (emit_call): If both the caller and the callee is
20236         guaranteed to have 32 bit addresses, emit a normal call.
20237
20238         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20239
20240         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20241         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20242         method_ptr inside delegates.
20243
20244 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20247         invalidated. Fixes #73001.
20248
20249         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20250
20251         * mini-x86.c: Only use stdcall for pinvokes on windows.
20252
20253 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20254
20255         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20256         * mini-x86.c: remove unreliable __thread var offset detection,
20257         use the correct accessors and enable by default.
20258
20259 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20260
20261         * mini.c (mono_jit_free_method): Fix memory leak.
20262
20263 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20266
20267 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * cpu-amd64.md: Fix lengths of atomic opcodes.
20270
20271 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20272
20273         * driver.c: try to not imply using ICU is any good.
20274
20275 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20278         functions as inline ops.
20279
20280         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20281         some Interlocked functions as inline ops.
20282
20283         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20284
20285         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20286
20287         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20288
20289         * mini.c: Add support for OP_NOT_TAKEN.
20290
20291         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20292         structures in registers for pinvoke wrappers.
20293
20294         * mini-amd64.c: Fix warnings.
20295
20296 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20297
20298         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20299
20300         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20301
20302         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20303         address instead of loading the address from it.
20304
20305         * mini-x86.c: Add support for returning small structs in registers
20306         on Win32. Fixes part of #70864.
20307         
20308 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20309
20310         * trace.c (get_token): Improve error checking.
20311
20312 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20315
20316 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20317  
20318         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20319         it can be reused for MonoClass.
20320         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20321         _LINKDEMAND.
20322
20323 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20324
20325         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20326         instead of a MonoReflectionMethod. The method information wasn't used
20327         when displaying SecurityException details (but will be now).
20328
20329 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20330
20331         * Makefile.am : windows build fix.
20332
20333 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * iltests.il: Add new regression test.
20336
20337         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20338         #72522.
20339
20340 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20341  
20342         * mini.c: Moved linkdemand check into helper function check_linkdemand
20343         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20344         LDFTN, LDVIRTFTN).
20345
20346 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20347
20348         * declsec.c: Added statistics counter for different kinds of 
20349         LinkDemands.
20350         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20351         (and commented) declaration.
20352         * mini.c: Added statistics counter for security Demand code 
20353         generation. Added display of security statistics.
20354
20355 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20356
20357         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20358         Fix compilation errors under gcc-2.95.
20359
20360 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20361
20362         * mini.c, driver.c: Use the new jit trampoline hashtable
20363
20364 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20365
20366         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20367
20368 2005-02-11  Martin Baulig  <martin@ximian.com>
20369
20370         * debug-mini.c (mono_debug_close_method): Free the line number array.
20371
20372 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20375         icalls.
20376
20377         * mini.h: Bump AOT file format version. 
20378
20379 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20380
20381         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20382         APTC and P/Invoke.
20383         * declsec.h: Added macros to get/set lazyly initialized security 
20384         informations about assemblies. Added new enum for different type of
20385         possible LinkDemand violation. Added function to check LinkDemands.
20386         * mini.h: Added a field to MonoCompile to hold any security violation
20387         detected when JITting a method (so it can be thrown later).
20388         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20389         and CEE_CALLVIRT. Added code to throw exception at the end of
20390         mini_method_compile (note: the exception is unhandled right now).
20391
20392 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20393
20394         * mini.c, jit-icalls.c: use the managed implementation of
20395         memset for initobj and memset, to avoid managed <-> unmanaged
20396         transitions.
20397
20398 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20401         optimization if it would need a GOT var.
20402
20403         * basic.cs: Add tests for constant propagation and switch statements.
20404
20405         * ssa.c: Fix out-of-range constant propagation and switch statements.
20406
20407 2005-02-09    <vargaz@freemail.hu>
20408
20409         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20410
20411 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20412
20413         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20414
20415 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20416
20417         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20418
20419 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20420
20421         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20422         arithmetic operations.
20423
20424 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20425
20426         * mini-ppc.c: add a workaround for broken user code that
20427         DllImports vararg functions with non-vararg signatures.
20428
20429 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20432         meaningfull error message for assemblies written in Managed C++.
20433
20434         * tramp-amd64.c mini-amd64.h: Add support for 
20435         create_trampoline_from_token ().
20436
20437         * aot.c mini-x86.c abcremoval.c: Applied patch from
20438         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20439
20440 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20443         which takes a MonoImage/token as parameter instead of a MonoMethod.
20444
20445         * aot.c: Use the new trampoline for initializing vtables.
20446
20447         * aot.c: Add support for ldfld/stfld_remote wrappers.
20448
20449         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20450         rules for compare <MEM>, IMM.
20451
20452         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20453
20454         * aot.c: Handle inherited finalizers correctly.
20455
20456 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20457
20458         * inssel.brg (stmt): Add a missing _setup_... ().
20459
20460         * aot.c: Save some parts of the class state to the AOT file and use it
20461         to recompute that state when a class is initialized.
20462
20463         * mini.c: Install AOT hooks into the runtime.
20464
20465         * mini.h: Bump AOT file format version.
20466         
20467         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20468         Fixes #72148.
20469
20470         * iltests.il: Add new test.
20471
20472 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20473
20474         * mini.c: fix typo.
20475
20476 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20477
20478         * mini.c: setup the statistical profiler in the thread attach
20479         callback to cope with the new single thread code.
20480
20481 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20482
20483         * mini-ppc.c: ensure we have enough room for the profiler
20484         calls (fixed bug#72084).
20485
20486 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20487
20488         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20489         it.
20490
20491 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20492
20493         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20494
20495 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20496
20497         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20498         to succesfully execute parrotbench).
20499         * ssapre.h: Likewise.
20500
20501 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20502
20503         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20504         variable for stores to method arguments (fixes a SSAPRE issue).
20505
20506 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20507
20508         * mini.c: handle value types in dup, fixes gen-112.cs.
20509
20510 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20511
20512         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20513         sequence for calls in dynamic methods to avoid thunks.
20514
20515 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20516
20517         * mini.c: correctly remove dynamic methods from the hashtable.
20518
20519 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20520
20521         * driver.c: Disabled SSAPRE until fix the bug that appears
20522         in IronPython's parrotbench.
20523
20524 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20525
20526         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20527
20528         * mini.c (mono_method_to_ir): Revert the previous change.
20529         
20530         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20531         when AOT compiling.
20532
20533         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20534         mono_jit_info_table_find () etc. when running under valgrind.
20535
20536         * inssel.brg: Fix warnings.
20537
20538         * mini-exceptions.c: Fix warnings.
20539
20540 2005-01-31  Martin Baulig  <martin@ximian.com>
20541
20542         * driver.c (compile_all_methods_thread_main): Don't try to compile
20543         generic methods or anything which has type parameters.
20544
20545 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20546
20547         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20548
20549         * TestDriver.cs: Add --verbose flags.
20550
20551         * graph.c ssa.c: Fix 64 bit warnings.
20552         
20553         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20554         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20555         Fix 64 bit warnings.
20556
20557         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20558         variable not spotted by gcc.
20559         
20560         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20561         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20562         X86_COMPARE_MEMBASE opcodes.
20563
20564         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20565
20566 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20567
20568         * *: MonoMethod->signature might be NULL now. You *MUST* use
20569         mono_method_signature.
20570
20571 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20572
20573         * driver.c (compile_all_methods_thread_main): Compile the methods
20574         without invoking cctors.
20575
20576 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20577
20578         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20579         * basic-calls.cs: test for the above.
20580
20581 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20584         MonoJitInfo changes.
20585
20586 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20589         eagerly if it contains dynamic methods.
20590         
20591         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20592
20593         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20594         trace, it is now computed by an icall from trace_ips.
20595         
20596         * mini-exceptions.c: Fix a warning.
20597
20598 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini-exceptions.c: don't bother getting stack trace info if
20601         it's not going to be used.
20602
20603 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20604
20605         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20606         ssapre-mini-ops.h.
20607
20608 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20611
20612         * aot.c: Avoid calling mono_method_get_header () if not needed.
20613
20614         * mini.h: Bump AOT file format version.
20615         
20616         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20617
20618         * mini.c (mono_print_tree): Print more info for calls.
20619
20620 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20621
20622         * declsec.h: Remove warning by adding missing include for marshal.h
20623
20624 2005-01-26  Martin Baulig  <martin@ximian.com>
20625
20626         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20627         `ip' twice.
20628
20629 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20630
20631         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20632         flags.
20633
20634         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20635
20636         * aot.c (mono_compile_assembly): Fix a warning.
20637
20638 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20639
20640         * declsec.c: Look for security attributes on the original MonoMethod 
20641         (and not the wrapped one). This fix permissions on icalls.
20642
20643 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20644
20645         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20646
20647         * mini.c (mono_allocate_stack_slots): Add a fixme.
20648
20649         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20650
20651 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20652
20653         * inssel.brg: optimize casts of sealed types (more
20654         optimizations waiting for fixes in remoting).
20655
20656 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20657
20658         * inssel.brg (stmt): Add another dummy rule.
20659
20660         * driver.c: Fix warnings.
20661
20662         * driver.c (mono_main): If running under valgrind, instruct glib to use
20663         the system allocation functions so valgrind can track the memory
20664         allocated by the g_... functions.
20665
20666         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20667
20668         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20669
20670         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20671
20672         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20673         variables in try regions.
20674
20675         * mini.c (mini_method_compile): Don't disable optimizations on large
20676         methods when AOT compiling.
20677
20678         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20679         allocate stack slots. Not yet used.
20680
20681 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20682
20683         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20684
20685 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20686
20687         * mini-ppc.c: make the branch info relative as the code
20688         buffer can be reallocated.
20689
20690 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20691
20692         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20693         * driver.c: Removed the AOT/security restriction. Now initialize the
20694         security manager (in metadata) if --security is used.
20695         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20696         rather than the pointer to declarative security, when AOT is used.
20697
20698 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20699
20700         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20701         basic blocks, reduced intrinsic exception throwing code size.
20702
20703 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20704
20705         * driver.c (mini_usage): Reorder the usage screen.
20706
20707 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * mini.c (mono_resolve_patch_target): Fix warning.
20710
20711 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20712
20713         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20714         previous patch.
20715
20716         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20717
20718         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20719         breaks the amd64 build.
20720
20721         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20722         register allocation. Fixes #71454.
20723
20724         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20725
20726         * arrays.cs: Add new regression test.   
20727
20728 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20729
20730         * ssapre.c: Turned usage of snprintf to GString.
20731         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20732         (I left it on by mistake in my previous commit).
20733
20734 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20735
20736         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20737         on cond branch optimization (fixes bug# 71515).
20738
20739 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20740
20741         * abcremoval.c: Fixed bug 71062.
20742         * abcremoval.h: Likewise.
20743
20744 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20745
20746         * mini.c: Added a new functionality to optimize_branches, the removal
20747         of useless basic blocks, and fixed some problem in the removal of
20748         critical edges; some utility functions added for both purposes.
20749         * ssapre.c: Added complex expression support, and fixed bug 70637.
20750         * ssapre.h: Likewise.
20751         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20752         enabled in SSAPRE.
20753         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20754         * driver.c: Re-enabled SSAPRE.
20755
20756 2005-01-19  Martin Baulig  <martin@ximian.com>
20757
20758         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20759         the result of mono_get_method_constrained().
20760
20761 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20762
20763         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20764         manager.
20765
20766 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20767
20768         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20769         be detected.  Fixes #59296.
20770
20771 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20772
20773         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20774         which can happen. Fixes #71361.
20775
20776 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20777
20778         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20779         manager.
20780
20781 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20782
20783         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20784         appdomain-unload.exe to fail.
20785         
20786         * mini.c: Fix some memory leaks.
20787
20788 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20789
20790         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20791         Fixed bug and sped up some codepaths.
20792
20793 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * mini.c: Fix some memory leaks.
20796
20797         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20798         conversion.
20799
20800         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20801
20802         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20803         #71320.
20804
20805         * iltests.il: Add regression test for #71320.
20806
20807 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20808
20809         * mini.c (mono_codegen): Fix installation of profiler hooks.
20810
20811         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20812
20813 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20814
20815         * mini.h, mini.c, cfold.c: optimize access to enum
20816         readonly fields, too. Eval conditional branches if possible
20817         to perform unreachable code removal in more cases.
20818
20819 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20820
20821         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20822
20823         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20824         code manager.
20825
20826         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20827         WinXP DEP. Fixes #71244.
20828
20829 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20830
20831         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20832
20833 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20834
20835         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20836
20837 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20840         changes.
20841
20842         * mini.h: Bump AOT version.
20843
20844         * mini.h (MonoCompile): Change exvar to a hash table.
20845
20846         * mini.c: Allocate a separate exvar for each handler block.
20847
20848         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20849
20850         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20851         ex var with the pending exception and only throw if the two are equal.
20852         Fixes #68552.
20853         
20854         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20855
20856         * mini-x86.c: Fix warnings.
20857
20858         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20859         used by all the ports now.
20860
20861         * aot.c: Add write-symbols and save-temps options.
20862
20863 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20864
20865         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20866
20867 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20868
20869         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20870         operations.
20871
20872         * tramp-s390.c: Check vtable slot belongs to the domain.
20873
20874         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20875         as per other platforms.
20876
20877         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20878
20879 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20880
20881         * driver.c: we don't run the Main() code in a subthread anymore.
20882
20883 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20884
20885         * mini.c: added experimental rtc support in the statistical
20886         profiler: if the user has the permission, more accurate statistics
20887         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20888         The MONO_RTC value must be restricted to what the linux rtc allows:
20889         power of two from 64 to 8192 Hz.
20890
20891 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20894
20895 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20896
20897         * mini-ppc.c: better icache flush for smp.
20898
20899 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20900
20901         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20902
20903         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20904         amd64 port, not yet used.
20905
20906 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20907
20908         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20909         a struct type.
20910
20911 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20912
20913         * driver.c: Added --security option to activate the security manager.
20914         Right now this will allow code generation for declarative demands and
20915         is disabled when AOT is specified.
20916         * mini.c: Add code generation for declarative security demands.
20917         * mini.h: Add mono_use_security_manager as an extern gboolean.
20918
20919 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20920
20921         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20922         emitting more dense assembly code.
20923
20924         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20925         exception throwing stuff.
20926
20927 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20930         dead code.
20931
20932         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20933         left in by mistake.
20934
20935         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20936         fixed.
20937
20938         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20939
20940         * tramp-*.c: Only patch vtable slots if the object is in the current
20941         domain. Fixes appdomain-unload.exe.
20942
20943         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20944         
20945         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20946         x86 branch.
20947
20948 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20949
20950         * mini.c (reverse_branch_op): New helper function.
20951
20952         * mini.c (optimize_branches): Run the new optimization only on 
20953         platforms which support it. Also reverse all kinds of branches.
20954
20955         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20956
20957         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20958         a throw statement.
20959
20960         * mini.c (optimize_branches): Reverse not-equals branches if the false
20961         bblock is a throw. This happens a lot of time with argument checking in
20962         corlib.
20963
20964         * mini.c (mono_codegen): Add support for placing basic blocks after
20965         the function epilogue.
20966
20967         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20968         function epilogue.
20969         
20970 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20971
20972         * mini.c (setup_stat_profiler): Only set this up if the platform
20973         supports ITIMER_PROF.
20974
20975 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20976
20977         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20978         previous patch.
20979
20980         * inssel.brg: Fix a warning.
20981
20982 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20983
20984         * mini.c: added support for statistical profiler 
20985         (run with: --profile=default:stat).
20986
20987 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20988
20989         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20990
20991         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20992
20993         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20994         related to global registers from the amd64 port.
20995
20996 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20997
20998         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20999
21000         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
21001         with global registers.
21002         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21003
21004         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21005
21006 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * debug-mini.c (encode_value): Fix off-by-one.
21009
21010         * aot.c (encode_value): Likewise.
21011
21012         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21013
21014 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21015
21016         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21017         AOT.
21018
21019         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21020         
21021         * aot.c (emit_method_info): Increase size of temp buffer.
21022
21023         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21024         the AOT case.
21025
21026 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * aot.c (emit_method_info): Fix build.
21029         
21030         * aot.c: Further rework of the AOT file format to reduce the size of
21031         the method info data.
21032
21033         * mini.h: Bump AOT file format version.
21034
21035 2004-12-27  Martin Baulig  <martin@ximian.com>
21036
21037         * mini.c (mini_get_method): New static method; call
21038         mono_get_method_full() and mono_get_inflated_method().
21039         (mono_method_to_ir): Use mini_get_method() instead of
21040         mono_get_method_full(). 
21041
21042 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21043
21044         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21045
21046 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21049
21050         * inssel-amd64.brg: Add some optimization rules.
21051
21052 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21053
21054         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21055         standard not GC'd stuff is fine.
21056
21057 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21058
21059         * aot.c: Rework the AOT file format to get rid of most of the global
21060         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21061
21062         * mini.h: Bump AOT file format version.
21063         
21064 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21065
21066         * mini.h: Bump AOT file format version.
21067
21068         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21069         address is inside a GOT.
21070
21071         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21072
21073         * cpu-pentium.md: Increase the maximum size of some instructions which
21074         might involve a got access.
21075         
21076         * mini.c (get_method_from_ip): Another debug helper function.
21077
21078         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21079         when got var accesses are created during the decompose phase.
21080
21081         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21082
21083         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21084         argument mini_compile_method and to MonoCompile, and use this to
21085         determine whenever a given method is compiled for AOT. This allows the
21086         other methods compiled during AOT compilation to be free of AOT stuff,
21087         so the backends does not need to add special support for them by
21088         creating a fake GOT etc.
21089
21090         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21091         longer needed.
21092
21093 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21094
21095         * mini.c (mono_method_to_ir): It turns out that some of the
21096         x-appdomain wrappers are lax with types, so just ignore this for
21097         all wrappers.
21098
21099         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21100         at the vtable->klass. If it is non-shared code we can just use the
21101         vtable.
21102
21103 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21104
21105         * mini-ppc.c: access MonoDomain from tls, too.
21106
21107 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21108
21109         * declsec.c: Removed unused variable (and related warning ;-)
21110
21111 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21112
21113         * iltests.il: New test for LDELEMA on an array of ref types.
21114
21115         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21116         all ldelema's on reftypes.
21117         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21118         it was the wrong place to put it.
21119
21120         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21121         register to pop to make this cleaner, at the request of Paolo.
21122
21123 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21124
21125         * mini-ops.h (OP_GETHASHCODE): New op.
21126
21127         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21128
21129         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21130         operation.
21131
21132         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21133         by 25%.
21134         
21135         * mini-x86.c (mono_arch_output_basic_block): Rather than
21136
21137         add ebp, 4
21138
21139         Emit
21140
21141         pop edx
21142
21143         The first is 3 bytes while the second is 1. This saves 36 kb on
21144         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21145         see a small boost because of icache locality.
21146
21147         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21148
21149 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21150
21151         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21152         started code sharing with the generic code.
21153
21154 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21155
21156         * mini-ppc.c, cpu-g4.md: added code for direct access to
21157         tls data slots.
21158
21159 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21160
21161         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21162          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21163         to OP_TLS_GET.
21164
21165 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21166
21167         * declsec.c|h: Added functions to cache the declarative stack modifiers
21168         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21169         structure.
21170         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21171         created. Register internal calls for System.Security.SecurityFrame::
21172         _GetSecurityFrame and _GetSecurityStack.
21173         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21174         the definitions for the new stack walk/callback mechanism.
21175         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21176         first security frame for LinkDemands and InheritanceDemands) and
21177         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21178         from lupus.
21179         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21180         walk initialization (lupus).
21181
21182 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21183
21184         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21185         idiom.
21186         (handle_loaded_temps): Do not create a temporary variable for
21187         things that we know are temps. They will never be modified.
21188         (mono_spill_call): Set MONO_INST_IS_TEMP
21189         (mono_emulate_opcode): ditto
21190         (emit_tree): ditto
21191         (mono_method_to_ir.CEE_DUP): ditto
21192
21193 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21194
21195         * mini.c (type_to_eval_stack_type): Make this handle the void type
21196         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21197         (emit_tree): use ip_in_bb to special case some common idioms
21198         Update all callers to pass in the IP.
21199         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21200
21201         This gives us a nice 2% speedup in mcs bootstrap.
21202
21203         * mini-x86.c (peephole_pass): Peephole pass to make
21204         mov  [foo], eax
21205         push [foo]
21206
21207         into
21208
21209         mov [foo], eax
21210         push eax
21211
21212         * mini.c (ip_in_bb): new method.
21213         (mono_method_to_ir): use this method rather than doing the hash
21214         lookup ourselves.
21215
21216         * linear-scan.c (mono_linear_scan): When expiring actives, you
21217         don't need to keep around variables that expire on this
21218         instruction. This makes it so that:
21219              a = b + 1
21220         will turn into:
21221              store (ebx add (ebx, 1))
21222         which will become
21223              add ebx, 1
21224
21225 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21226
21227         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21228         combination to avoid doing two copies. Fix up problems with previous
21229         patch.
21230
21231         * mini.c: Fix 64 bit warnings.
21232
21233         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21234
21235 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21238         changes from the x86 code.
21239
21240         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21241
21242 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21243
21244         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21245         throwing code to reduce its size, unify the AOT and non-aot code and 
21246         get rid of relocations in the AOT case.
21247
21248         * mini-x86.h mini.c exceptions-x86.c 
21249         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21250         raise corlib exceptions which doesn't require relocations in the 
21251         caller.
21252
21253         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21254
21255 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21258         needed.
21259
21260         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21261         in the AOT case.
21262
21263 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21264
21265         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21266         with add function when used from Inc/dec atomic 
21267         functions. Re-enabled optimization on x86.
21268         * mini-ops.h: renamed atomic_add functions to
21269         allow _add to match the Interlocked::Add and
21270         _add_next to match Interlocked::Inc/Dec.
21271
21272 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21273
21274         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21275         linking of BBs to the end BB, and enabled SSAPRE also with
21276         consprop and copyprop (which was prevented by that bug).
21277
21278 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21279
21280         * mini-x86.c: disabling the Interlocked optimizing code. 
21281
21282 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21283
21284         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21285         file version check.
21286         
21287 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21288
21289         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21290         interlocked optimization due lack of support on x86, rewrote 
21291         exchange to take into account that base may be in eax.
21292         
21293         xsp works again; activated Interlocked optimizing code.
21294         
21295 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21296
21297         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21298
21299 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21300
21301         * mini-ops.h: Add new opcodes.
21302
21303         * mini.h: Add new patch types. Add got_var to MonoCompile.
21304
21305         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21306         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21307         make it work with all kinds of patchable code.
21308
21309         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21310         address of the GOT, and referencing entries in the GOT.
21311
21312         * mini.c: Add code to load the GOT address if needed by an opcode.
21313
21314         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21315         independent AOT code on the x86 using an elf-style Global Offset Table.
21316
21317 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21318
21319         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21320
21321 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21322
21323         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21324         when running xsp.
21325
21326 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21327
21328         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21329         of Interlocked:Increment/Decrement/Add as inline ops.
21330         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21331
21332 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21333
21334         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21335         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21336
21337 2004-12-12  Duncan Mak  <duncan@ximian.com>
21338
21339         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21340         again. `patch_info->table_size' is no longer valid after Zoltan's
21341         commit #37636.
21342
21343 2004-12-12  Martin Baulig  <martin@ximian.com>
21344
21345         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21346         if we are the "real" method, ie. not an inlined method inside it.
21347
21348 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21349
21350         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21351         before we look in the special fields table. This fixes
21352         ../tests/thread-static-init.cs.
21353
21354 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21355
21356         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21357         for Array get_Rank and get_Length. Fixes bug #70465.
21358
21359 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21360
21361         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21362         separate structure to reduce the size of MonoJumpInfo.
21363
21364 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21365
21366         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21367
21368 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21369
21370         * mini.c (mini_get_inst_for_method): Changed to allow ports
21371         to return a MonoInst instead of opcode 
21372         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21373         
21374         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21375         Allow ports to return a created MonoInst instead of op-code, will enable
21376         new optimizations.
21377         (renamed mini_get_opcode_for_method to better reflected the functionality)
21378
21379 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21380
21381         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21382
21383 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21386         Fixes #69985.
21387
21388 2004-12-08  Martin Baulig  <martin@ximian.com>
21389
21390         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21391         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21392
21393 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21394
21395         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21396         correctly.
21397
21398         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21399         arithmetic.
21400
21401 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21402
21403         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21404
21405 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21406
21407         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21408         bug introduced by the previous patch.
21409
21410 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21411
21412         * mini-ppc.c, objectc.cs: handle large structs passed by value
21413         (fixes bug #69972).
21414
21415 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21416
21417         * mini-ppc.c: OP_ARGLIST implementation from
21418         Geoff Norton  <gnorton@customerdna.com>.
21419
21420 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21421
21422         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21423         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21424
21425 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21426
21427         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21428
21429 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21430
21431         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21432         support.
21433
21434 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * mini-sparc.c: Zero out localled-ed memory.
21437
21438         * iltests.il: Add tests for zeroing out localloc-ed memory.
21439
21440 2004-12-04  Martin Baulig  <martin@ximian.com>
21441
21442         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21443         mono_method_get_signature_full().       
21444
21445 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21446
21447         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21448         and some utility functions (always for SSAPRE), integrated SSAPRE.
21449         * mini.h: Likewise.
21450         * driver.c: Added ssapre option.
21451         * ssa.c: Small fix on OP_ARG handling.
21452         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21453         * Makefile.am: Likewise.
21454
21455 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21458         now in the xp code.
21459
21460         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21461         icall.
21462
21463 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21464
21465         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21466         
21467         * cpu-s390.md : Increase instruction length of oparglist.
21468
21469         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21470
21471 2004-11-30  Martin Baulig  <martin@ximian.com>
21472
21473         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21474         virtual generic methods.  We call a special helper_compile_generic_method()
21475         icall to retrieve the method from the vtable, inflate and compile
21476         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21477
21478         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21479
21480 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21481
21482         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21483
21484 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21485
21486         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21487         Fixes #69929.
21488
21489 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21490
21491         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21492         platforms with PIC aot.
21493
21494 2004-11-28  Martin Baulig  <martin@ximian.com>
21495
21496         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21497         Fixes gen-112.cs.
21498
21499 2004-11-28  Martin Baulig  <martin@ximian.com>
21500
21501         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21502         the result of mono_type_get_underlying_type() to check whether
21503         we're byref.
21504
21505 2004-11-26  Martin Baulig  <martin@ximian.com>
21506
21507         * mini.c
21508         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21509         in the g_assert().
21510
21511 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21514         the same way as the other arguments so they won't get clobbered.
21515
21516         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21517         calls through R11 since it is clobbered by the trampoline code.
21518
21519 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21520
21521         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21522         pick up in-tree mscorlib.dll.
21523
21524 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21527
21528         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21529         runtime data/code are now stored in a table similar to the GOT in ELF. 
21530         This allows the code itself to be position independent.
21531
21532         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21533         loading changes.
21534
21535         * aot.c: Attach ELF type (object/function) directives to all global
21536         symbols.
21537
21538         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21539
21540         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21541
21542         * mini-amd64.h: Turn on PIC AOT code.
21543
21544         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21545         returning the offset within an OP_AOTCONST instruction where the GOT
21546         offset needs to be added.
21547
21548         * mini.h: Bump AOT file format version.
21549
21550 2004-11-25  Martin Baulig  <martin@ximian.com>
21551
21552         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21553         uninflated generic methods.
21554
21555 2004-11-25  Martin Baulig  <martin@ximian.com>
21556
21557         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21558
21559 2004-11-24  Martin Baulig  <martin@ximian.com>
21560
21561         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21562         original klass (this only applies for generic instances).
21563
21564 2004-11-24  Martin Baulig  <martin@ximian.com>
21565
21566         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21567         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21568         that array).
21569
21570 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21571
21572         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21573         localloc. Fixes #69678.
21574
21575         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21576         
21577 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21578
21579         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21580         used SSE registers on pinvoke calls. Fixes #69774.
21581
21582 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21583
21584         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21585         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21586
21587 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21588
21589         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21590         Refer directly to the mcs/ tree.
21591
21592 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21593
21594         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21595         Check if a trampoline for a synchronized method is required. 
21596
21597 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21598
21599         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21600         with localloc if needed. Throe arithmetric exception in
21601         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21602         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21603
21604 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21605
21606         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21607         types before switching on type.  Fixes #69622.
21608
21609 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21610
21611         * Makefile.am (check-local): New.  Integrate into 'make check'.
21612         (MCS,RUNTIME): Define using in-tree mono and mcs.
21613         (ILASM): New.
21614         (%.exe): Use $(ILASM).
21615
21616 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21617
21618         * mini-ppc.c: adjust initial prolog size (bug #69691).
21619
21620 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21621
21622         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21623         #69664.
21624
21625 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21626
21627         * Makefile.am (clean-local): Rename from 'clean'.
21628
21629 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21630
21631         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21632         to mono_arch_is_int_overflow. 
21633         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21634         SIGFPE events.
21635
21636 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21637
21638         * declsec.c|h: New files to support declarative security attributes.
21639         Added function to check if a method has (applicable) security.
21640         * mini.c|h: Add check for declarative security attributes in
21641         mono_method_check_inlining.
21642         * Makefile.am: Added declsec.c and declsec.h to the build.
21643
21644 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21645
21646         * mini.c, mini.h: update to keep dynamic code info per-domain.
21647
21648 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21649
21650         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21651         (mini_init): Get rid of it from here too.
21652
21653 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21654
21655         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21656         implemented OP_RETHROW (patch by Geoff Norton
21657         <gnorton@customerdna.com>).
21658
21659 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21660
21661         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21662         between appdomains.  Fixes appdomain-unload on PPC.
21663
21664 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21665
21666         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21667         mini-exceptions.c: handle the new wrapper types.
21668         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21669         token value as a MonoClass* when compiling a wrapper.
21670         mono_jit_create_remoting_trampoline now takes an additional
21671         MonoRemotingTarget parameter.
21672         
21673 2004-11-10  Martin Baulig  <martin@localhost>
21674
21675         * mini.c (mono_method_to_ir): Use `generic_container->context'
21676         rather than creating a new one.
21677
21678 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21679
21680         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21681
21682         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21683
21684 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21685
21686         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21687         the experimental aot cache stuff.
21688
21689 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21690
21691         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21692         mini-exceptions.c: update to exception clause structure changes.
21693
21694 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21695
21696         * exceptions-x86.c (throw_exception): Fix warnings.
21697
21698         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21699         for OP_RETHROW.
21700
21701 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21702
21703         * exceptions-sparc.c (get_throw_exception): Really fix this.
21704
21705 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21706
21707         * tramp-*.c: we no longer support icalls without wrappers, so
21708         a bit of code can be removed here
21709
21710 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21711
21712         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21713         patch.
21714
21715         * cpu-sparc.md: Add op_rethrow.
21716
21717         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21718
21719         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21720
21721         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21722         * mini-ops.h: Add OP_RETHROW.
21723
21724         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21725
21726         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21727
21728 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21729         
21730         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21731         Makes the output much easier to read
21732
21733 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21734
21735         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21736         prevents another huge leak when compiling with ssa. Secondly, the
21737         performance of doing this rather than freeing the lists is much
21738         better. GList does a lock every time you allocate a list link,
21739         so that it can use a memory pool. So, it is better to just use
21740         a memory pool of our own.
21741         
21742         * ssa.c, linear-scan.c: replace g_list_remove_link with
21743         g_list_delete.  The remove one does not free the GList, so we were
21744         leaking memory. On -O=all --compile-all with corlib, this cut down
21745         3 MB of allocations.
21746
21747 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21750
21751         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21752
21753         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21754         into a new function mono_create_jit_trampoline ().
21755
21756 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21757
21758         * trace.c (get_spec): Allow tracing of classes without a namespace.
21759
21760 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21761
21762         * mini.c: Fix pointer overwrite in mini_method_compile.
21763
21764 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21765
21766         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21767         The darwin ABI needs some special handling for 1 and 2 byte structs
21768         Lets use lbz/lhz instead of lwz everywhere.
21769         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21770         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21771         Use stb/sth for the former, and put the latter always on stack instead of in
21772         argument registers.
21773
21774 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21775
21776         * trace.c (is_filenamechar): Add '_'.
21777
21778 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21779
21780         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21781
21782         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21783
21784 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21785
21786         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21787         depends on libmonogc. Fixes #68805.
21788
21789 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21790
21791         * mini.c (mono_jit_free_method): Provide extra information for
21792         this error.  Currently this leaks, but will be turned into a
21793         developer option in the future.
21794
21795 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21798
21799 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21802         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21803         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21804
21805 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21806
21807         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21808         trampolines for AOT code.
21809
21810 2004-10-22    <vargaz@freemail.hu>
21811
21812         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21813         constructed types. Fixes #68136.
21814
21815 2004-10-21  Martin Baulig  <martin@ximian.com>
21816
21817         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21818         if it returns true, unwind the stack to the call instruction.
21819
21820 2004-10-21    <vargaz@freemail.hu>
21821
21822         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21823
21824         * mini.h: Bump AOT version number.
21825
21826         * objects.cs: Add another test for unbox trampolines.
21827
21828         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21829         valuetype methods.
21830
21831 2004-10-20    <vargaz@freemail.hu>
21832
21833         * driver.c: Add SHARED to the set of optimizations tested.
21834
21835         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21836
21837         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21838         used by CEE_NEWARR.
21839
21840         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21841
21842 2004-10-20  Martin Baulig  <martin@ximian.com>
21843
21844         * mini-exceptions.c (mono_handle_exception): Call
21845         mono_debugger_handle_exception() to tell the debugger about
21846         catch/finally clauses.
21847
21848 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21849
21850         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21851
21852         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21853         #68447.
21854
21855 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21856
21857         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21858         methods as their native size, fixed bug #57543, #57545.
21859         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21860         This saves a temporary register and mullw call down into 1 (minor perf
21861         increase for cases like sum = sum * 5;  This use to translate into:
21862             li r11,5
21863             mullw r28,r28,r11
21864         It now translates to
21865             mulli r28,r28,5
21866
21867 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21868
21869         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21870         #68388.
21871
21872 2004-10-11  Martin Baulig  <martin@ximian.com>
21873
21874         * mini.c (mono_method_to_ir): If we're a generic method, get the
21875         MonoGenericContainer from our MonoMethodNormal and create a
21876         MonoGenericContext from it.
21877
21878 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21881
21882         * basic-long.cs: Add test for checked i8->i2 cast.
21883
21884 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21885
21886         * inssel-ppc.brg: added a couple of speedup rules.
21887
21888 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21891         to speed up rebuilds.
21892
21893 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21894
21895         * mini-s390.c: Minor fix to OP_OR_IMM.
21896
21897 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21900         better. Fixes appdomain-unload.exe on sparc.
21901
21902 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21903
21904         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21905         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21906         see bug 67324.
21907
21908 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21911
21912 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21913
21914         * mini.c: Always generate a field read/write wrapper for members
21915         of the class MarshalByRefObject since the actual instance could
21916         be a CBO.
21917
21918 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21919
21920         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21921
21922 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21923
21924         * driver.c mini.h trace.c: Move the setting of the main assembly into
21925         a separate function called mono_trace_set_assembly () and call it after
21926         actually loading the main assembly. Fixes #66872.
21927
21928 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21929
21930         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21931         using the code manager.
21932
21933 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21934
21935         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21936
21937 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21938
21939         * cpu-amd64.md: Fix bug in previous patch.
21940         
21941         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21942         #66650.
21943
21944 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21945
21946         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21947         mini-exceptions.c: updates for changed stack walk interface.
21948
21949 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21950
21951         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21952
21953 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21954
21955         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21956
21957 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21958
21959         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21960         since assemblies can't be unloaded.
21961         
21962 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * cpu-amd64.md: Fix more instruction lengths.
21965
21966         * cpu-amd64.md: Fix lengths of some instructions.
21967
21968 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21969
21970         * inssel.brg: Make the array ldelema check aot friendly.
21971
21972 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21973
21974         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21975
21976         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21977
21978 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21979
21980         * mini-x86.c: Fix build.
21981
21982         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21983         mono_type_get_underlying_type () helper function to simplify code.
21984         
21985 2004-09-09  Martin Baulig  <martin@ximian.com>
21986
21987         * mini-amd64.c: Don't access `type->data.klass' directly, call
21988         mono_class_from_mono_type() instead since the type may be a
21989         generic instance.
21990
21991 2004-09-09  Martin Baulig  <martin@ximian.com>
21992
21993         * mini-amd64.c (get_call_info): Fix support for generic instances.
21994         (add_valuetype): Use mono_class_from_mono_type() to get the class
21995         since we can be a generic instance.
21996
21997 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21998
21999         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
22000
22001 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22002
22003         * liveness.c: reset spill costs on each scan: bug 62107
22004
22005 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22006
22007         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22008         unnecessary line that doesn't compile
22009
22010 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22013         trampolines, make them call an error function so people can fix their
22014         code.
22015
22016 2004-09-06  Martin Baulig  <martin@ximian.com>
22017
22018         * mini.c (mono_method_to_ir): When initializing locals, handle a
22019         generic instances like a valuetype if it's a valuetype and like a
22020         class if it's a class.
22021
22022 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22025         stack. Fixes #64674.
22026
22027         * exceptions.cs: Add test for unwinding of call arguments.
22028
22029 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22030
22031         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22032         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22033         set the carry/borrow flag). The sparc and s390 implementations
22034         can now use optimized versions (and simplify the code). ppc bugfixes.
22035
22036 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22039
22040 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22041
22042         * inssel-amd64.brg: Remove leftover 32 bit rule.
22043
22044         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22045
22046 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22047
22048         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22049         mono_arch_find_jit_info functions into a new function. Fix a memory
22050         leak.
22051
22052         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22053         refactored code.
22054         
22055 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22056
22057         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22058         as well.
22059         
22060         * exceptions.cs: Add array size tests.
22061
22062         * mini.c: Allocate a separate icall wrapper for each arity of 
22063         mono_array_new_va. Fixes #59509.
22064
22065         * exceptions.cs: Add testcase for 64578.
22066
22067         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22068
22069         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22070         
22071 2004-09-02  Martin Baulig  <martin@ximian.com>
22072
22073         * mini.c (mono_method_to_ir): When initializing the locals, call
22074         handle_initobj() on the generic instance itself, not its
22075         underlying type.
22076
22077 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22080         MonoJitInfo for dynamic methods.
22081
22082         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22083
22084         * mini.c: Add support for freeing JIT data for dynamic methods.
22085         
22086 2004-09-01  Martin Baulig  <martin@ximian.com>
22087
22088         * mini-x86.c (is_regsize_var): Added support for generic
22089         instances.
22090         (mono_arch_emit_prolog): Make this compile again, use
22091         `x86_push_imm_template (code)'.
22092
22093 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22094
22095         * mini-x86.c: make all push_imm instructions that get
22096         patched always emit the long form
22097
22098 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22099
22100         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22101         in a per-domain hash.
22102
22103         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22104         types.
22105
22106 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22107
22108         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22109         work.
22110         
22111         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22112         work.
22113
22114         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22115         Beginnings of SSE2 support.
22116
22117         * exceptions.cs: Add more tests for checked int<->uint casts.
22118
22119 2004-08-28  Martin Baulig  <martin@ximian.com>
22120
22121         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22122         generic instances.
22123
22124         * mini.c
22125         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22126         Handle generic instances recursively.
22127
22128 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22129
22130         * iltests.il: test for conv.u8 on a constant
22131
22132 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22133
22134         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22135         LCONV_x4 (shrun_32 (membase)).
22136
22137 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22138
22139         * inssel-x86.brg: c&p rules for push/setret of long
22140
22141 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22142
22143         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22144         compare (regvar, base)
22145
22146         * inssel-x86.brg: more burg love
22147
22148         * inssel.brg: more cleanup
22149
22150         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22151
22152 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22153
22154         * basic-long.cs, basic-calls.cs: new tests for optimization.
22155
22156 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22157
22158         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22159         patch.
22160
22161 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22162
22163         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22164         
22165 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22166
22167         * inssel.brg (mini_emit_memcpy): use 
22168         NO_UNALIGNED_ACCESS to disable memcpy optimization
22169
22170 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22171
22172         * mini-amd64.c: Handle generic types in various places.
22173
22174         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22175
22176 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22177
22178         * mini.c (handle_box): Fix warning.
22179
22180         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22181
22182         * mini-amd64.h: Enable the emit_state optimization.
22183
22184         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22185
22186         * mini-amd64.c: Add some new 64 bit peephole opts.
22187
22188         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22189
22190         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22191
22192         * mini-amd64.c: Register allocator fixes.
22193
22194         * mini.c: Add an optimization to emit_state to avoid allocation of new
22195         registers on some platforms.
22196
22197 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22198
22199         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22200
22201         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22202         allocation. Fixes #63085.
22203
22204         * basic-long.cs: Add new regression test.
22205
22206         * mini-amd64.c: Register allocator improvements.
22207
22208 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22209
22210         * mini-amd64.c (read_tls_offset_from_method): Add another code
22211         sequence.
22212
22213         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22214         instruction sequence for nullifying class init trampolines.
22215
22216         * objects.cs: Add new regalloc test.
22217
22218         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22219
22220 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22221
22222         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22223         
22224         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22225         arguments.
22226
22227         * driver.c: Fix profiling after TLS changes.
22228         
22229         * driver.c (mono_main): Set mono_stats.enabled if needed.
22230
22231         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22232         CEE_BOX.
22233
22234 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22235
22236         * mini-x86.c: use a 1 op rather than a 2 op tls access
22237         instruction -> faster.
22238
22239 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22240
22241         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22242         x86 backend.
22243
22244 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22245
22246         * exceptions-sparc.c (throw_exception): fix typo
22247
22248 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22249
22250         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22251         set tree->dreg correctly with tls. Allow any
22252         register to be used.
22253
22254         * mini-x86.c (read_tls_offset_from_method): add new code
22255         generation pattern seen with GCC.
22256
22257
22258 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22259
22260         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22261         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22262         exceptions-sparc.c: fix some performance issues in exception
22263         handling and setting of the stack trace for exceptions that were
22264         already thrown.
22265
22266 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22267
22268         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22269         x86 backend.
22270         
22271         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22272         registers.
22273
22274 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22275
22276         This patch inlines tls access, when possible.
22277         
22278         * mini.h: new arch functions for TLS intrinsics.
22279         All platforms updated with a stub.
22280
22281         * mini.c: use the new intrinsics
22282
22283         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22284         arch specific intrinsic for tls variables
22285
22286 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22287
22288         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22289         under windows.
22290
22291 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22292
22293         * mini.c: thread local allocation
22294
22295 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22296
22297         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22298
22299         * Makefile.am: Link against the static version of libmonogc.
22300         
22301         * Makefile.am: Link the static versions of the convenience libraries
22302         into the mono executable.
22303
22304         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22305
22306 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22309         on integer overflow.
22310
22311         * mini-amd64.c: Reorganize function call code.
22312
22313         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22314
22315 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22316
22317         * inssel-x86.brg: use xor eax,eax.
22318         
22319         * basic.cs: new tests
22320
22321 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22324         in exception throwing code.
22325         
22326 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22327
22328         * inssel-x86.brg: use xor esi,esi.
22329
22330 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22333         can trace methods compiled during mini_init () too.
22334
22335         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22336         CEE_CONV_U4.
22337
22338 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22339
22340         * Makefile.am: static link on x86 (r=zoltan)
22341
22342 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22345         code since it causes some programs to fail.
22346
22347 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22348
22349         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22350
22351 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22352
22353         * mini.c: ovfops_op_map - add STACK_OBJ case for
22354         CONV_I 
22355         * basic.cs: add test_0_pin_string as test
22356         case for above.
22357
22358 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22359
22360         * Makefile.am: build C# if srcdir != builddir
22361
22362 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22363
22364         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22365         fall-through blocks.
22366
22367 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22368
22369         * driver.c: enable loop by default again and include abcrem in -O=all.
22370
22371 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22372
22373         * iltests.il: Add some localloc tests.
22374
22375         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22376
22377         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22378         Fixes #62574.
22379
22380         * inssel-amd64.brg: Add some optimizations.
22381
22382         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22383         for gcc-3.4.
22384
22385         * Makefile.am: Statically link mono against libmono on AMD64.
22386         
22387         * mini-amd64.c inssel-amd64.brg: Optimizations.
22388
22389 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22390
22391         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22392
22393         * tramp-amd64.c: Patch calling code in trampolines.
22394
22395 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22396
22397         * mini-amd64.c: pinvoke struct passing fixes.
22398
22399 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22400
22401         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22402         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22403
22404 2004-08-05  Duncan Mak  <duncan@ximian.com>
22405
22406         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22407         CEE_LDELEM_ANY.
22408
22409 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22410
22411         * mini-amd64.c (emit_move_return_value): Move return value for normal
22412         calls too.
22413
22414 2004-08-05  Martin Baulig  <martin@ximian.com>
22415
22416         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22417         `type->type'; just modify `type' itself when dealing with enums
22418         and generic instances.
22419         (check_call_signature): Make `simple_type' a `MonoType *'.
22420
22421 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22422
22423         * mini.c: Use OP_PADD to add offsets to addresses.
22424
22425         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22426
22427 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22428
22429         * mini-sparc.c (mono_arch_emit_epilog): fix check
22430         for folding last op into restore instruction
22431
22432 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22433
22434         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22435         helper methods using the code manager.
22436         
22437         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22438
22439         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22440
22441 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22442         
22443         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22444           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22445
22446         * mini-s390.c: fix tail processing
22447
22448 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22449
22450         * mini-ppc.c: mul.ovf.un exception name fix.
22451
22452 2004-08-03  Martin Baulig  <martin@ximian.com>
22453
22454         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22455         instances; before jumping to `handle_enum', also modify `ptype'.
22456
22457 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22458
22459         * cpu-sparc.md: fcall maximal length too small.
22460
22461 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22462
22463         * mini-amd64.c mini.h: Add initial support for passing/returning 
22464         structures to/from pinvoked methods.
22465
22466 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22467
22468         * mini-ppc.c: reg allocator fix.
22469
22470 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22471
22472         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22473
22474         * inssel.brg: Optimize memset on 64 bit machines.
22475
22476         * mini-amd64.c: Fix some vararg cases.
22477
22478 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22479
22480         * mini-s390.c: Corrected macro in emit_float_to_int
22481
22482         * s390-abi.cs: Tests to exercise the s390 ABI
22483
22484 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22487         caller saved regs.
22488
22489         * basic.cs: Add a test for add.ovf.un.
22490
22491 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22492
22493         * mini-sparc.c: add case for OP_IDIV_UN
22494
22495 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22498         
22499         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22500
22501 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22502
22503         * basic.cs: regression tests.
22504
22505         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22506         regressions.
22507
22508 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22509
22510         * basic.cs: Add a new test.
22511
22512         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22513         and AOT. Various fixes and optimizations.
22514
22515         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22516
22517 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22518
22519         * mini-ppc.c: make sure temp regs are not used for global reg
22520         allocation.
22521
22522 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22523
22524         * cpu-sparc.md: conv_i8 fix for 64bits
22525
22526         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22527
22528 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22529         
22530         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22531         add opcode for cmp BYTE PTR [eax], imm.
22532
22533         * inssel.brg: Make memcpy and memset takes bases.
22534
22535 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22536
22537         * *-amd64.*: More AMD64 work.
22538         
22539 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22540
22541         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22542         add a compare-not-equal opcode.
22543         
22544 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22545
22546         * mini.c: Use mono_init_from_assembly instead of mono_init.
22547         
22548 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22549
22550         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22551
22552         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22553
22554         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22555
22556         * inssel.brg: 64 bit fixes.
22557
22558         * mini.h (MonoCallInst): Add some AMD64 specific data.
22559
22560         * mini.h: Add some OP_P opcodes.
22561
22562 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22563
22564         * basic.cs: tests for 61797 and 61740
22565
22566 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22567
22568         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22569         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22570
22571 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22572
22573         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22574
22575         * *-amd64*.*: Ongoing AMD64 work.
22576
22577 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22578
22579         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22580
22581         * *-amd64*: Ongoing AMD64 work.
22582
22583         * mini-arch.h: Add AMD64 support.
22584
22585         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22586
22587         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22588
22589         * mini-ops.h: Add new opcodes.
22590
22591         * Makefile.am: Add AMD64 support.
22592
22593         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22594         rules into the inssel-long*.brg files.
22595
22596         * *-amd64.*: Add beginnings of AMD64 backend.
22597
22598 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22599
22600         * mini.c (print_dfn): commenting out the code that prints
22601         the cil. With -O=deadce, this makes -v -v crash.
22602         
22603         * cpu-pentium.md: make checkthis have a length of 2
22604
22605 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22606
22607         * mini-sparc.h: fix implementations of __builtin
22608         functions for Sun compiler for V9.
22609
22610 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22611
22612         * mini.c: use the new stelem.ref wrapper
22613         * exceptions.cs, arrays.cs: new stelem.ref tests
22614
22615 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22616
22617         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22618         new XSP should work with these changes).
22619
22620 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22621         
22622         * inssel-{long32,x86,}.brg: trivial optimizations.
22623         
22624 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22625
22626         * mini.c: load value when emitting box operation in
22627         constrained calls.
22628
22629 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22630
22631         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22632         is one byte shorter than cmp DWORD PTR [eax], 0.
22633
22634 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22635
22636         * inssel-ppc.brg: arguments on the stack are always
22637         relative to the stack pointer (spotted by Neale Ferguson).
22638
22639 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22640
22641         * exceptions-x86.c: delay appending the method name to the trace until
22642         after mono_jit_info_table_find is called, as this gets the real
22643         MonoMethod.
22644
22645 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22646
22647         * aot.c: register roots
22648
22649 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22650
22651         * aot.c : I could just use PLATFORM_WIN32 flag.
22652
22653 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22654
22655         * aot.c : Reverting the previous fix. This time it broke linux build.
22656
22657 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22658
22659         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22660
22661 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22662
22663         * mini.c (handle_stack_args): Remove some more debugging code.
22664         
22665         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22666
22667         * driver.c mini.h aot.c: Allow additional options to be specified with
22668         --aot and pass them to mono_compile_assembly.
22669
22670         * aot.c: Add experimental code to AOT compile all loaded assemblies
22671         on demand and save the code into a cache in the filesystem.
22672
22673         * aot.c: Add support for more wrapper methods.
22674         
22675         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22676         58863.
22677
22678         * cpu-*.md: Remove removed opcodes.
22679
22680         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22681         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22682         related icalls to marshal.c.
22683
22684 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22685
22686         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22687
22688         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22689
22690         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22691
22692 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22693         * liveness.c: If liveness is recomputated we need to reset the information
22694         for each variable. This way, if the liveness range has been narrowed
22695         by optimizations that happened after the last computation, we can return
22696         a smaller range.
22697         
22698         For example, if you have
22699         
22700         {
22701                 int i = 0;
22702                 
22703                 // Tons of code that does not affect i
22704                 
22705                 i = foo ();
22706                 ...
22707         }
22708         
22709         i = 0 is dead code and will be removed by SSA. However, when
22710         linear scan gets to the code, i will still appear to be live
22711         throughout the entire block. This prevents good register allocation.
22712
22713 2004-07-06  Martin Baulig  <martin@ximian.com>
22714
22715         * debug-mini.c (mono_debug_init_method): Allow
22716         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22717         (mono_debug_add_icall_wrapper): New method.
22718
22719         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22720
22721 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22724         optimization.
22725
22726 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22727
22728         * aot.c (mono_aot_load_method): Fix loading of debug info.
22729
22730 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22731
22732         * aot.c: Add logging support.
22733
22734 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * mini.h: Add prototype for mono_print_method_from_ip.
22737
22738         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22739
22740         * inssel.brg: 64 bit fixes.
22741
22742         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22743         inssel-long32.brg.
22744
22745         * Makefile.am: Add SPARC64 support.
22746
22747 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * aot.c: Fix alignment problems on 32 bit platforms.
22750
22751 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22752
22753         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22754         SPARC64.
22755
22756         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22757         problems.
22758
22759         * mini.h: Bump AOT file version. Some 64 bit fixes.
22760
22761 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22762
22763         * inssel-sparc.brg: Add new rule to avoid register moves.
22764
22765         * inssel.brg: Add ldind_to_load_membase helper function.
22766
22767 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22768
22769         * mini.c: OffsetToStringData intrinsic.
22770         
22771 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22772
22773         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22774
22775         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22776         regression tests.
22777
22778         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22779 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * mini.c: reinstated mono_compile_get_interface_var()
22782         on x86, too, since the change breaks the Gtk# build there as well.
22783
22784 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22785
22786         * driver.c: remove loop from the default optimizations: it seems to
22787         interact badly with some of the other options (see bug #60613).
22788
22789 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22792         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22793
22794 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22795
22796         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22797         vararg-using methods.
22798
22799 2004-06-21  Martin Baulig  <martin@ximian.com>
22800
22801         * mini/mini-exceptions.c
22802         (mono_handle_exception): Added `gpointer original_ip' argument.
22803         After calling mono_unhandled_exception(), call
22804         mono_debugger_unhandled_exception() and if that returns true,
22805         restore the context and return.
22806
22807 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22808
22809         * mini-ppc.c: prefer the use of relative branches so
22810         they won't need to be patched in aot code (patch from Patrick Beard).
22811
22812 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22813
22814         * aot.c: patch from Patrick Beard to make the output assembly
22815         more correct for the MacOSX assembler. Small tweak to
22816         generate sane images on Linux/PPC, too.
22817
22818 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22819
22820         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22821         case until bug #59509 is fixed (shows up in #60332).
22822
22823 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22824
22825         * mini.c: make sure the needed wrappers are compiled, too, with
22826         precomp.
22827
22828 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22829
22830         * driver.c: remove NPTL reference in --version output.
22831
22832 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22833
22834         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22835         generate valid assembly for the Mach-O assembler.
22836
22837 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22838
22839         * driver.c: don't include abcrem in the all optimization specifier
22840         since it slows down jit compilation too much for now.
22841
22842 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22843
22844         * mini.c: use BIGMUL only if both operands have the same signage.
22845         * iltests.il: Test for bug 60056. (errors related to signage in
22846         BIGMUL).
22847
22848         r=lupus.
22849
22850 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22851
22852         * mini.c, aot.c: memory leak fixes.
22853
22854 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22855
22856         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22857
22858 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22859
22860         * Makefile.am: remove the -static hack completely, it links in
22861         statically glib as well.
22862
22863 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22864
22865         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22866         * exceptions.cs: make it compile with new mcs/csc.
22867
22868 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22869         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22870         and added relevant test case.
22871
22872 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22873
22874         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22875         regressions in gtk-sharp.
22876
22877 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22878
22879         * exceptions.cs: New regression tests.
22880
22881         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22882
22883 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22884
22885         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22886
22887 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22890
22891         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22892
22893 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22894
22895         * mini.c (mono_jit_runtime_invoke): Init class in this
22896         method instead of trusting mono_jit_compile_method to
22897         do the work (because wrappers can be in object class)
22898
22899 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22900
22901         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22902
22903         * basic-long.cs: New regression test.
22904
22905 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22906
22907         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22908         and div/rem checks.
22909
22910 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22911
22912         * Makefile.am: fix miguel's change to build mono statically against
22913         libmono (track build dependencies).
22914
22915 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * cfold.c: Some glib versions do not have G_MININT32.
22918
22919 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22920
22921         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22922         with precision of tan, atan, sin and cos, and implemented related
22923         regressions tests (fixes bug 54467, but one new problem appeared and
22924         is not fixed yet).
22925
22926 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22927
22928         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22929
22930         * exceptions.cs: Add test for constant folding && division by zero.
22931
22932         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22933         since driver.c is in libmono too, so the optimization was useless.
22934
22935         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22936         variable to driver.c so the compiler can emit more efficient code to
22937         access them.
22938
22939 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22940
22941         * Makefile.am: don't distribute generated inssel.[ch] files.
22942
22943 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22944
22945         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22946         into the default appdomain. Fixes #58707.
22947
22948         * jit-icalls.c: Remove the broken approximation for truncl, doing
22949         no conversion is better.
22950
22951         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22952         Fixes #58863.
22953
22954 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22955
22956         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22957         of the mcrxr instruction which is not available on some processors
22958         even if it's documented to be. Implement add and sub overflow correctly
22959         (still not complete for long unsigned). Speed up icalls a bit.
22960
22961 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22962
22963         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22964         we run .cctor in the current domain instead of target_domain.
22965         
22966         Fixes bug #58558, .cctor not being called in -O=shared.
22967
22968 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22969
22970         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22971
22972 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22973
22974         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22975         which can be done with an imm8, do it that way.
22976         (mono_arch_output_basic_block): ditto for a jmp
22977         (mono_arch_emit_prolog): Computate maximum offset of a label.
22978
22979 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22980
22981         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22982         now tries to allocate prefered physical reg's for virtual
22983         regs. This reduces the number of emited spills/loads with
22984         20-30% on our core assemblies.
22985
22986 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22987
22988         * jit-icalls.c: truncl() is not needed and trunc() is
22989         the correct thing to do anyway (bug #58287).
22990
22991 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22992
22993         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22994         if available.
22995
22996 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22997
22998         * driver.c: enable loop optimizations by default.
22999
23000 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
23001
23002         * mini-x86.c: fix calc of max loop size when aligning loops start.
23003
23004 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23005
23006         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23007         the stack.
23008
23009 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23010
23011         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23012         should set carry.
23013
23014         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23015
23016         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23017         
23018         * mini.c (inline_method): Allways inline some wrappers even if the cost
23019         is too large. Fixes #58785.
23020
23021         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23022         
23023 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23024
23025         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23026         (crichton@gimp.org). Beginning of support for sparc/linux.
23027
23028         * mini-sparc.c: Optimize retrieval of LMF address.
23029
23030 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23031
23032         * exceptions-ppc.c:  handle alloca in methods with clauses.
23033
23034 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23035
23036         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23037
23038 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23039
23040         * mini.c: Delegate most of the abort signal work to 
23041           mono_thread_request_interruption, which also handles Stop and Suspend
23042           states.
23043
23044 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23045
23046         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23047         supports the save/restore lmf opcodes.
23048
23049 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23050
23051         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23052         by gcc-3.4 as well.
23053
23054         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23055
23056 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23057
23058         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23059         methods which contain array accesses.
23060
23061         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23062         boundaries. Fixes #58537.
23063
23064         * iltests.il: Add regression test for #58537.
23065
23066 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23067
23068         * mini-x86.c (mono_arch_local_regalloc): Last part of
23069         fix for bug #58633 (releasing register to early).
23070
23071 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23072
23073         * basic-long.cs: Add new regression test.
23074
23075 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23076
23077         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23078         register too early on the chain.
23079
23080 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23081
23082         * mini.c (create_helper_signature): Use a helper function to reduce
23083         the code which needs to be written. Also set the calling convention of
23084         icalls on windows. Fixes #57840.
23085
23086 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23087
23088         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23089         exceptions-ppc.c: added helper function to get the instruction address
23090         from a signal handler context.
23091
23092 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23093
23094         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23095         from gonzalo.
23096
23097 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23098
23099         * helpers.c: Add new env variable to pass args to objdump.
23100         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23101
23102 2004-05-17  Radek Doulik  <rodo@ximian.com>
23103
23104         * Makefile.am (common_sources): added abcremoval.h so it get
23105         disted and daily mono packages on go-mono.com will build again
23106
23107 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23108
23109         * abcremoval.c: Fixed coding style, added copyright header.
23110
23111         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23112
23113         * mini.h: Added prototype for abc removal main function.
23114
23115         * build_relations_propagation_table.pl: Added copyright header.
23116
23117 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23118
23119         * basic-long.cs: reg test for complex ceq_long bug.
23120
23121 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23122
23123         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23124         reg in long and clob case (bug #58343). Fixed/added comments.
23125
23126 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23127
23128         * mini.c (mono_jit_runtime_invoke): Follow new convention
23129         of calling the invoke method with an function pointer.
23130
23131 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23132
23133         * ChangeLog: Fix author of memory leak patch.
23134
23135 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23136
23137         * Makefile.am: fix make dist as well...
23138
23139
23140 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23141
23142         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23143         on archs where pointers are 4 bytes long.
23144
23145         * Makefile.am: Added abcremoval.c source file.
23146
23147         * abcremoval.c: Added abcremoval.c.
23148
23149         * abcremoval.h: Added abcremoval.h.
23150
23151         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23152
23153         * inssel.brg: Enabled bounds check removal.
23154
23155         * mini.c: Added support for abcrem optimization.
23156
23157         * mini.h: Added abcrem optimization label.
23158
23159         * driver.c: Added support for abcrem optimization.
23160
23161         * propagated_relations_table.def: Added propagated_relations_table.def.
23162
23163 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23164
23165         * mini.c, cfold.c: fix style.
23166
23167 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23168
23169         * mini.c: handle issue with the low-level implementation of
23170         some long opcodes (bug #54209).
23171
23172 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23173
23174         * basic.cs: test for my new cmov stuff.
23175
23176 2004-05-13      Patrik Torstensson
23177
23178         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23179         opt and added peephole documentation.
23180
23181 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23182
23183         * tramp-ppc.c: rewrote the generic trampoline code.
23184
23185 2004-05-11      Patrik Torstensson
23186
23187         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23188
23189 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23190
23191         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23192
23193         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23194         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23195
23196         * mini.c: Add new icalls for AsAny marshalling.
23197
23198 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * tramp-ppc.c, mini-ppc.c: more cleanups.
23201
23202 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23203
23204         * mini.c: no warnings.
23205
23206 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23207
23208         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23209
23210 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23211
23212         * mini.c: In the thread abort signal handler, if the thread is in the
23213         process of being stoped, don't throw the Abort exception, just stop the
23214         thread.
23215
23216 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23217
23218         * tramp-ppc.c: removed old code.
23219
23220 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23221
23222         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23223         do some simple speed optimizations on ppc.
23224
23225 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23226
23227         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23228         and large offsets in load/store.
23229
23230 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23231
23232         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23233         it causes regressions.
23234
23235 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23236
23237         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23238         support.
23239
23240 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23241
23242         * jit-icalls.c: remove warnings.
23243         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23244         speedups for unsafe code.
23245
23246 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23247
23248         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23249
23250 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23251
23252         * basic-calls.cs: Add new regression test.
23253
23254         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23255         more portable.
23256
23257         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23258
23259         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23260         is no longer used.
23261
23262 2004-05-06      Patrik Torstensson
23263
23264         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23265         long reg allocation in any reg (not only eax:edx) and implemented 
23266         long shl/shr ops in asm instead of helpers.
23267
23268 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23269
23270         * mini-sparc.h: Fix warnings.
23271
23272         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23273         stack.
23274
23275         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23276         separate statement for clarity.
23277
23278         * mini-sparc.c: Update status.
23279
23280 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23281
23282         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23283         here.
23284
23285 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23286
23287         * inssel-ppc.brg: another small pre-release workaround:
23288         we don't do overflow detection for long_sub_un.
23289
23290 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23291
23292         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23293         (also works around a weird ppc bug: 57957).
23294
23295 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23296
23297         * tramp-ppc.c: trampoline fixes.
23298
23299 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23300
23301         * mini-ppc.c: fixed typos.
23302
23303 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23304
23305         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23306         at the top of the stack. Fixed typos. Use a frame registers
23307         for all the methods with exception clauses.
23308
23309 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23310
23311         * exceptions-ppc.c: restore fp registers.
23312
23313 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23314
23315         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23316         order from the stack top (moved the stack room to save the
23317         return value for trace after the param area). Fixed corruption
23318         in restoring registers on unwind.
23319
23320 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23321
23322         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23323
23324 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23325
23326         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23327         and prolog/epilog for methods that use it. Allow
23328         enough param area room for varargs methods. Fix miguel's
23329         breakage in exception handling.
23330
23331 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23332
23333         * Makefile.am: run genmdesc only on current arch.
23334
23335 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23336
23337         * exceptions-x86.c:
23338         * mini-x86.h: fix the build on windows.
23339
23340 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23341
23342         * 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.
23343
23344         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23345
23346         * mini-exceptions.c: New file.
23347         
23348         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23349         Move some parts of the x86 exception handling code to an 
23350         arch-independent file so it can be shared with other ports.
23351
23352 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23353
23354         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23355
23356 2004-04-26  David Waite  <mass@akuma.org>
23357
23358         * driver.c: remove comma from end of enumeration declaration
23359
23360 2004-04-26  Jackson Harper  <jackson@ximian.com>
23361
23362         * driver.c: parse config file before loading first assembly. This
23363         allows the user gac to be enabled/disabled. 
23364         
23365 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23366
23367         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23368         simpler mechanism: we do not care what is encoded initially
23369         (branch absolute or relative), we care about the code and its
23370         target.  I kept the old code for reference for now.
23371
23372         The new code tries first to determine if the jump is anywhere in
23373         the -/+32 absolute meg range, if it succeeds, it encodes using the
23374         absolute branch;  If not, it tried to find something in the
23375         relative range, if not, it uses the handle_thunk code. 
23376
23377 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23378
23379         * exceptions-ppc.c: use the correct ip register on macosx.
23380
23381 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23382
23383         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23384
23385 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23386
23387         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23388         Raise exception on integer divide by zero by hand since the hw
23389         doesn't support it. Handle NaNs in FP compares.
23390
23391 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23392
23393         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23394         code reducing duplication between the platforms and enabled
23395         signal exception handling (on linux for now).
23396
23397 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23398
23399         * exceptions-ppc.c: more macosx support.
23400
23401 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23404
23405 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23406
23407         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23408
23409 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23410
23411         * iltests.il: more tests.
23412
23413 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23414
23415         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23416         vars as well.
23417
23418 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23419
23420         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23421
23422 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * liveness.c: Mark variables as volatile in all basic blocks reachable
23425         from exception clauses.
23426
23427 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23428
23429         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23430         inlining.
23431
23432 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23433
23434         * iltests.il, basic.cs: more tests for regalloc.
23435
23436 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23437
23438         * iltests.il: Some tests for register allocation modifications
23439         I have locally.
23440
23441 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23442
23443         * exceptions.cs: Add regression test for bug #56782.
23444
23445         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23446         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23447         the beauty of fixing the same thing in 5 different files...
23448
23449 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23450
23451         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23452         methods.
23453
23454 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23455
23456         * mini.c: Add support for STRWLPARRAY marshalling convention.
23457
23458 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23459
23460         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23461         to init the context to setup the regs pointer).
23462
23463 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23464
23465         * exceptions-ppc.c: more exceptions work.
23466
23467 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23468
23469         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23470         not allowed.
23471
23472 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23473
23474         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23475         can use the memory directly.
23476
23477         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23478
23479         add x86_add_membase, x86_sub_membase, x86_mul_membase
23480
23481 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23482
23483         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23484         GENERAL_REGS they were also hardcoded for all PPC ports.
23485
23486         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23487
23488         Remove hard-coded limit for floating point registers, use
23489         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23490
23491         Notice that in MacOS X calling conventions you can fit a lot more
23492         floating point values in registers, so I should update the PInvoke
23493         test to excercise the passing of floating point values on the
23494         stack (currently broken).
23495         
23496 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23497
23498         * tramp-ppc.c (create_trampoline_code): Added
23499         JUMP_TRAMPOLINE_SIZE. 
23500         (ppc_magic_trampoline): Follow the pattern from
23501         x86_magic_trampoline: if code is set to zero, return. 
23502         (create_trampoline_code): Always pass MonoMethod to the jump
23503         trampoline, before it was passing a null.
23504         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23505         share the code with mono_arch_create_jit_trampoline. 
23506
23507         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23508         implemented.
23509         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23510         implemented.  
23511
23512         * cpu-g4.md: Added length for jmp instruction, the worst case
23513         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23514         for save_lmf).
23515
23516 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23517
23518         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23519
23520 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23521
23522         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23523         before each IL instruction.
23524
23525         * mini.c (CEE_BOX): Fix warnings.
23526
23527 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23528
23529         * mini.c: removed a few unused vars and extra whitespace.
23530
23531 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23532
23533         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23534         checks.
23535         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23536         index.
23537         (OP_GETCHR): use the above
23538         (CEE_LDELEMA): use the above.
23539
23540         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23541         version of the generic impl.
23542         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23543         (CEE_LDELEMA): use the above.
23544
23545 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23546
23547         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23548         Fixes #56317.
23549
23550         * iltests.il: Added new regression test for #56317.
23551
23552 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23553
23554         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23555         under NetBSD. Fixes #56450.
23556
23557         * liveness.c (update_gen_kill_set): Fix previous patch.
23558
23559 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23560
23561         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23562
23563 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23564
23565         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23566         ldsfld and ldsflda.
23567
23568         * inssel-sparc.brg: Add more optimizations.
23569
23570         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23571
23572 2004-04-01  Martin Baulig  <martin@ximian.com>
23573
23574         * mini.c (handle_box): New static function; moved the
23575         implementation of CEE_BOX here.
23576         (mono_method_to_ir): Added `constrained_call' variable.
23577         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23578         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23579         mono_method_get_constrained() to get the method.
23580
23581 2004-04-01  Martin Baulig  <martin@ximian.com>
23582
23583         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23584         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23585         (mono_method_to_ir): We don't need these macros anymore since
23586         mono_class_get_full() already takes care of it. 
23587
23588 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23589
23590         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23591         use @function (as doesn't accept #function here) and check the return
23592         value of system and stop if fails.
23593
23594 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23595
23596         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23597
23598 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23601
23602         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23603
23604         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23605         #56223.
23606
23607         * basic-long.cs: Add test for negation of Int64.MinValue.
23608
23609 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23610
23611         * mini-sparc.c: Update status.
23612
23613         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23614
23615         * exceptions-sparc.c: Fix return value in filters.
23616
23617         * inssel-sparc.brg: Fix register allocation in some rules.
23618
23619 2004-03-28  Martin Baulig  <martin@ximian.com>
23620
23621         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23622         if neccessary.  
23623
23624 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23625
23626         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23627         
23628         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23629         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23630         remove unused conv_u4 opcode.
23631
23632         * mini-x86.c: Remove valgrind workaround since it slows down things
23633         even when mono is not run under valgrind.
23634
23635 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23636
23637         * mini-sparc.c: Update status.
23638
23639         * inssel-sparc.brg: Add some optimizations.
23640
23641         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23642         future delay slot filling. Add support for varargs, tail calls and JMP.
23643
23644         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23645         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23646
23647         * inssel.brg: Fix register allocation in OP_ARGLIST.
23648
23649         * inssel.brg: Fix warnings.
23650
23651 2004-03-25  Martin Baulig  <martin@ximian.com>
23652
23653         * mini.c (inflate_generic_field): Removed.
23654         (mini_get_method): Removed, use mono_get_method_full(),
23655         (mini_get_class): Removed, use mono_class_get_full().
23656         (mono_method_to_ir): Pass our generic context to
23657         mono_field_from_token().        
23658
23659 2004-03-25  Martin Baulig  <martin@ximian.com>
23660
23661         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23662         of a `MonoMethod *'.
23663         (mini_get_method): Take a `MonoGenericContext *' instead
23664         of a `MonoMethod *'.
23665         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23666         a new local variable called `generic_context' which holds the
23667         current `MonoGenericContext *'; use it to lookup things.
23668
23669 2004-03-24  Martin Baulig  <martin@ximian.com>
23670
23671         * mini.c (mini_get_class): New static method; if we're inside a
23672         generic instance, inflate the class if neccessary.
23673         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23674
23675 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23676
23677         * iltests.il: New regression test for #55976.
23678
23679         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23680         #55976.
23681
23682 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23683
23684         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23685         output.
23686
23687 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23688
23689         * liveness.c: Consider SSA stores as well as loads when making vars
23690         volatile.
23691
23692         * exceptions.cs: New regression tests for register allocation.
23693         
23694 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23695
23696         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23697         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23698           domain lock only to protect puntual access to data structures.
23699           Added access lock for sighash, jit_icall_hash_name, 
23700           jit_icall_hash_addr and domain->code_mp.
23701
23702 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23703
23704         * driver.c: Print SIGSEGV handling method.
23705
23706         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23707
23708         * mini.c (setup_jit_tls_data): Handle case when this is called
23709         multiple times for a thread.
23710
23711         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23712         is different from fbxx_un. Fixes #54303. Also use constants instead of
23713         magic numbers in a lot of places.
23714
23715 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23716
23717         * exceptions.cs: Fix cctor test when --regression is used.
23718
23719 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23720
23721         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23722         for Linux/ppc.
23723
23724 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23725
23726         * inssel-ppc.brg: fixed register assignments for some rules.
23727
23728 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23729
23730         * exceptions.cs: Add test for exceptions in static constructors.
23731
23732         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23733         static constructors outside the domain lock. Fixes #55720.
23734
23735 2004-03-17  Martin Baulig  <martin@ximian.com>
23736
23737         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23738         (inflate_generic_field): Take the `MonoMethod *' instead of the
23739         `MonoClass *' and added support for generic method.
23740         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23741         have a `field->parent->gen_params', only inflate the field if it's
23742         an open constructed type.
23743
23744 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23747         exception object instead of the preconstructed ones.
23748
23749 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23750
23751         * mini.c: reverted changed to sigsegv_signal_handler commited
23752         accidentally in the previous patch.
23753
23754 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23755
23756         * mini.c:
23757         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23758         running --aot with an old assembly.
23759
23760 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23761
23762         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23763         point values.
23764
23765         * mini-sparc.c: Add support for v9 branches with prediction.
23766
23767 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23768
23769         * mini.c (mini_init): #warning is GNUC only
23770
23771         * mini-sparc.h: implement __builtin_frame_address
23772         and __builtin_return_address for Sun C compiler
23773
23774 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23775
23776         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23777
23778 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23779
23780         * basic-calls.cs: Add test for unaligned byref long argument passing.
23781
23782         * mini-ops.h: Add sparcv9 compare and branch instructions.
23783
23784         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23785         v9 instructions if we have a v9 cpu.
23786
23787         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23788         registers for global allocation.
23789
23790         * exceptions-sparc.c: Fixes.
23791         
23792 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23793
23794         * liveness.c (mono_analyze_liveness): Optimized version.
23795
23796         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23797
23798         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23799         sparc work.
23800
23801         * basic-float.cs basic-calls.cs: New regression tests.
23802
23803 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23804
23805         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23806         sigaltstack implementation.
23807
23808         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23809         
23810         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23811         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23812
23813 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23814
23815         * mini.c: Fix warnings.
23816         
23817         * mini.c (mono_resolve_patch_target): New function which contains the
23818         arch independent part of the patching process.
23819
23820         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23821         patching code to a separate function.
23822
23823 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23824
23825         * mini.c (add_signal_handler): ifdef out on Windows
23826
23827 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23828
23829         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23830         cpu-sparc.md: Add exception handling support + other fixes.
23831
23832         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23833         typed GC detection in --version.
23834
23835         * basic.cs exceptions.cs: New regression tests.
23836
23837         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23838         the arch specific code can store data during a compilation.
23839
23840         * mini-ops.h: Add OP_SETFRET.
23841
23842         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23843         function, register a separate icall for each arity, so the icalls can
23844         get a wrapper.
23845         
23846         * mini.c (mono_print_tree): Print negative offsets in a more readable
23847         form.
23848         
23849         * mini.c: Make signal handling work on sparc.
23850         
23851         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23852
23853         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23854
23855         * jit-icalls.c: Emulate truncl by aintl on solaris.
23856
23857         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23858
23859 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23860
23861         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23862
23863 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23864
23865         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23866         a MarshalByRef type, inline a method that performs the check, taking into
23867         account that the object can be a proxy. Also implemented tow new opcodes:
23868         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23869         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23870         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23871
23872 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23873
23874         * mini-ppc.c: if a relative branch displacement is too big
23875         but it points to and area reachable with an absolute branch, 
23876         avoid the thunks.
23877
23878 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23879
23880         * mini.c: optimize small copies in cpblk.
23881
23882 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23883
23884         * basic-calls.cs basic-float.cs: New regression tests.
23885
23886         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23887         negative offsets from %fp. Implement localloc. Fix local register 
23888         allocation. Fix the case when the this argument needs to be saved to
23889         the stack. Implement some missing opcodes.
23890
23891 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * mini.c (mini_method_compile): Reenable global regalloc in methods
23894         with exception handlers.
23895
23896         * linear-scan.c (mono_varlist_sort): Fix warning.
23897
23898         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23899
23900         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23901         regalloc costs.
23902
23903         * liveness.c: Make all variables uses in exception clauses volatile, to
23904         prevent them from being allocated to registers. Fixes #42136.
23905
23906 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23907
23908         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23909         causes regressions.
23910
23911         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23912         argument to mono_arch_regalloc_cost.
23913
23914         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23915         precisely.
23916
23917 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23918
23919         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23920         Make the cost of allocating a variable to a register arch dependent.
23921
23922         * basic-calls.cs: Fix compilation of tests.
23923         
23924         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23925         helper function to cut back on the number of #ifdefs needed.
23926
23927         * mini-ppc.c: Fix compilation.
23928
23929         * basic-calls.cs: New regression tests.
23930
23931         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23932
23933         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23934         of l0 since that is callee saved.
23935
23936         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23937         to virtual calls.
23938
23939         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23940         of delay instruction.
23941
23942         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23943
23944         * mini.h (MonoCallInst): Add 'virtual' flag.
23945
23946         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23947
23948 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         * *.cs: New regression tests.
23951
23952         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23953         work.
23954
23955         * mini.c (mono_runtime_install_handlers): Fix build.
23956
23957         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23958         'signal_stack_size' members.
23959
23960         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23961         alternate signal stack.
23962
23963         * exceptions-x86.c: Add stack overflow handling.
23964
23965         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23966         functions to arch independent code.
23967
23968         * mini.c (mono_print_tree): Print more detailed info for load_membase
23969         opcodes.
23970         
23971 2004-02-23  Martin Baulig  <martin@ximian.com>
23972
23973         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23974
23975 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23976
23977         * mini-x86.c: fixed reg allocation for div/rem.
23978
23979 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23980
23981         * driver.c (mono_main): Report some configuratio options on --version.
23982
23983 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23984
23985         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23986         low in the address space. Correctly flush memory in thunks where we
23987         output native code.
23988
23989 2004-02-20  Martin Baulig  <martin@ximian.com>
23990
23991         * mini.c (mini_get_method): New static method; inflate all generic
23992         methods and methods in open generic instances.
23993         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23994         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23995
23996 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23997
23998         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23999
24000         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
24001
24002 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24003
24004         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24005
24006         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24007         it compile using Sun's compiler.
24008
24009 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24010
24011         * 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.
24012
24013         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24014
24015 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24016
24017         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24018         code.
24019         * mini-ppc.c: handle calls outside of the allowed range with thunks
24020         allocated using the code manager.
24021         * tramp-ppc.c: use the code manager to hold generated native code.
24022         Fixed the magic trampoline to just patch vtable entries.
24023
24024 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24025
24026         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24027         independent file.
24028
24029 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24030
24031         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24032         PPC.
24033
24034         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24035         if we have a working __thread implementation.
24036
24037         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24038         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24039
24040 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * mini-x86.c: Fix compilation under gcc 2.
24043         
24044 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24045
24046         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24047         contains a call to the wrapped function.
24048
24049         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24050         OP_<CALL>_IMM opcodes, and use them under X86.
24051         
24052         * mini.c (mono_jit_find_compiled_method): Fix warning.
24053
24054         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24055
24056         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24057
24058         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24059         functionality to mini.c.
24060
24061         * mini.c (mono_create_jump_trampoline): New function to create a jump
24062         trampoline. Return a compiled method instead of a trampoline if it
24063         exists. Add a cache for jump trampolines.
24064
24065         * mini.c (mono_jit_find_compiled_method): New function to return a
24066         compiled method if it exists.
24067
24068         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24069         mono_arch_create_jit_trampoline.
24070
24071         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24072         a jump trampoline. Fixes #52092.
24073         
24074 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24077         which is not up-to-date. Add check_corlib_version () instead.
24078
24079         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24080         have to call it.
24081         
24082         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24083         since newer valgrind versions do not need it.
24084
24085         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24086         compile a method with a given set of optimizations.
24087
24088         * mini.c: Compile icall wrappers on-demand instead of at startup.
24089
24090         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24091         wrapper for an icall.
24092
24093 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24094
24095         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24096         #54063.
24097
24098         * iltests.il: Add test for non-empty stack before switch instruction.
24099
24100 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24101
24102         * mini.c: Add support for new stringbuilder marshalling conventions.
24103
24104         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24105
24106 2004-02-01  Martin Baulig  <martin@ximian.com>
24107
24108         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24109         in `ginst->mtype_argv'.
24110
24111 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24112
24113         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24114         facilitate grepping.
24115
24116 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24117
24118         * mini.c: fixed buglet in initobj generic implementation for references.
24119
24120 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24121
24122         * Makefile.am: make the version script conditional.
24123         * jit-icalls.c: handle missing truncl().
24124
24125 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24126
24127         * exceptions.cs: Add more tests for double->int conversion.
24128
24129         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24130         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24131
24132 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24133
24134         * driver.c: make --verbose --version emit an error
24135         if the loaded corlib doesn't match the runtime version.
24136
24137 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24138
24139         * mini-ppc.h: export ppc_patch().
24140         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24141         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24142         on par or better than on MacOSX.
24143
24144 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24145
24146         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24147         mono_lookup_pinvoke_call.
24148
24149         * mini-x86.c: Under windows, the default pinvoke calling convention is
24150         stdcall. Fixes #52834.
24151
24152         * mini.c (optimize_branches): Add an upper bound to the number of
24153         iterations to prevent infinite loops on strange loops. Fixes #53003.
24154
24155 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24158         and ISINST. Fixes #52093.
24159
24160         * objects.cs (test_0_vector_array_cast): New tests.
24161         
24162 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24163
24164         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24165         checking in Array.Set ().
24166
24167         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24168         #52590.
24169
24170         * object.cs (test_0_multi_array_cast): New regression test.
24171
24172 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24173
24174         * exceptions-ppc.c: fix build on Linux/PPC.
24175
24176 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24177
24178         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24179         running under valgrind.
24180         (x86_magic_trampoline): Fix build bustage.
24181
24182         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24183         negative values as well. This is needed for the encoding of the line number
24184         info, since sometimes the line numbers are not in increasing order.
24185
24186 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24187
24188         * cpu-pentium.md (localloc): Increase the size of the localloc 
24189         instruction since it is a loop under Win32.
24190
24191         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24192         allocation.
24193
24194 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24195
24196         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24197         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24198         Max Horn (max@quendi.de). Fix file names in comments.
24199
24200 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24201
24202         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24203         avoid stack overflow.
24204         (replace_usage): Avoid uninitialized variable warnings.
24205
24206         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24207         and taking the address of valuetype variables.
24208
24209 2004-01-03  Patrik Torstensson
24210
24211         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24212         for other purposes than FP later on.
24213
24214 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24215
24216         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24217         of tail calls.
24218
24219 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24220
24221         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24222
24223 2003-12-30  Patrik Torstensson <p@rxc.se>
24224
24225         * mini-x86.h: Decreased number of availiable fp regs.
24226         Solves corner cases with FP spilling.
24227
24228 2003-12-23  Patrik Torstensson <p@rxc.se>
24229
24230         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24231         for floating point stack tracking / spilling on x86. 
24232         Fixes bug #49012.
24233         
24234         * basic-float.cs: added float mul overflow test.
24235
24236 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24237
24238         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24239
24240 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24241
24242         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24243         supports for cond branches that overflow the immediate
24244         overflow offset. mcs can compile simple programs.
24245
24246 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24247
24248         * exceptions-ppc.c: exception handling support wip:
24249         finally handlers get run on exception.
24250
24251 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24254         profiling.
24255
24256 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24257
24258         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24259         initial support for stack walking and unwinding.
24260
24261 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24262
24263         * driver.c (mono_main): Make corlib-out-of-sync message more 
24264         descriptive. Also remove verify_corlib call.
24265
24266 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24267
24268         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24269         not overlap with other call's arguments, too.
24270
24271 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24272
24273         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24274         move to arch-specific code the choice of arch-specific
24275         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24276         * mini.c: ensure emulation calls will not interleave
24277         with other calls.
24278
24279 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24280
24281         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24282         the magic trampoline stack frame is dropped before executing
24283         the new method.
24284
24285 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24286
24287         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24288         and integer to fp conversions. Added support for overflowing
24289         arguments on the stack. Reserve a couple more registers as temps.
24290         Added support for aot compilation (as output still needs to be
24291         tweaked, though).
24292
24293 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24294
24295         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24296         Don't overwrite return register in some corner cases.
24297
24298 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24299
24300         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24301         static constructors when AOT compiling.
24302
24303         * driver.c (mono_main): Call mono_check_corlib_version.
24304
24305 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24306
24307         * cpu-g4.md, basic.cs: fixed div target register.
24308
24309 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * mini-ppc.c, basic.cs: shl_imm fix with test.
24312
24313 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24314
24315         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24316         structures by value. Misc fixes.
24317         * objects.cs: more tests.
24318
24319 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24320
24321         * mini-ppc.c: lconv.ovf.i implemented.
24322
24323 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24324
24325         * mini.c:
24326         (mini_init): don't error out if someone already called g_thread_init.
24327
24328 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24329
24330         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24331         to be any type per the spec. Fix abnormal memory usage when
24332         the same object is repeatedly thrown.
24333
24334 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24335
24336         * mini.c: check for overruns in IL code.
24337
24338 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24339
24340         * TODO: Add/remove some todo entries.
24341
24342 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24343
24344         * driver.c (mono_main): Call mono_verify_corlib.
24345
24346 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24347
24348         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24349         This has been moved to mini.c
24350         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24351         type being casted is marshalbyref it could be a proxy, so instead of
24352         emitting the type check code, emit a call to a runtime method that will
24353         perform the check by calling CanCastTo if needed.
24354
24355 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24356
24357         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24358         methods with large stack frames under Win32.
24359
24360 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24361
24362         * Makefile.am: Distribute regression tests.
24363
24364         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24365         at the end instead of inserting each variable into the sorted list.
24366
24367         * linear-scan.c (mono_varlist_sort): New helper function.
24368         
24369 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24370
24371         * mini.c: ensure arguments and locals are within bounds.
24372
24373 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24374
24375         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24376         related fixes.
24377
24378 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24379
24380         * mini.c (mono_cprop_copy_values): Fix crash.
24381
24382         * aot.c: Set verbosity back to 0.
24383         
24384 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24385
24386         * regalloc.c: complete memory leak fix by Laurent Morichetti
24387         (l_m@pacbell.net).
24388
24389 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24390
24391         * driver.c (main_thread_handler): Revert the previous patch.
24392
24393         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24394         under valgrind.
24395
24396         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24397         memory from the memory pool.
24398
24399         * driver.c (main_thread_handler): Turn on all optimizations when
24400         --aot is used.
24401
24402         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24403         an array for better performance.
24404
24405         * regalloc.c (mono_regstate_assign): Fix memory leak.
24406
24407         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24408         serialize the debug info.
24409
24410         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24411         debug info from the serialized representation.
24412
24413         * aot.c: Save debug info into the generated file and load it when 
24414         loading a method.
24415
24416         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24417
24418 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24419
24420         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24421         More FP-related fixes.
24422
24423 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24424
24425         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24426         and register allocation buglet. Hello world now runs.
24427
24428 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24429
24430         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24431         * tramp-ppc.c: fixed class init trampoline.
24432         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24433
24434 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24437         mini.c: more ppc changes/fixes.
24438
24439 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24440
24441         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24442         Also optimize the case when the arguments are the same in the caller 
24443         and in the callee.
24444
24445         * iltests.il: Add tests for tail calls with valuetype arguments.
24446
24447 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24448
24449         * mini-ppc.c: fixes for struct return type.
24450
24451 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24454         mono_spillvar_offset() to arch-specific code.
24455
24456 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24457
24458         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24459
24460 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24461
24462         * exceptions-x86.c: Fix stack space leaks.
24463         
24464         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24465         registers from the lmf if the method has save_lmf set.
24466
24467 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24468
24469         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24470         of icall wrappers into InvokeInDomain, since these are now per-domain.
24471
24472 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24473
24474         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24475         make some opcode emulation and intrinsic ops enabled/disabled 
24476         according to the architecture. More fixes.
24477
24478 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24479
24480         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24481
24482 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24483
24484         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24485         arch-specific handling for 'this' and struct return type to
24486         arch-specific code.
24487
24488 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24489
24490         * aot.c: prevent divide by zero error when reporting (it happened with
24491         Accessibility.dll).
24492
24493 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24494
24495         * mini.h (inst_switch): Remove unused macro.
24496
24497 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24498
24499         * aot.c:
24500         (load_aot_module): free 'info->methods' and 'info' properly. No more
24501         "free(): invalid pointer blah" messages when you have an old aot
24502         compiled assembly.
24503
24504 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24505
24506         * jit-icalls.c, mini.c: Added support for context static fields.
24507
24508 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24509
24510         * mini.c (mono_method_blittable): Methods which set LastError are not 
24511         blittable either. Fixes #51108.
24512         
24513 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24514
24515         * mini.c: flush icache.
24516         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24517
24518 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24519
24520         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24521
24522 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24523
24524         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24525         safe on IA32.
24526
24527         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24528         vararg calls.
24529
24530         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24531
24532 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24535         instruction when the result is discarded.
24536
24537         * iltests.il (test_0_div_regalloc): New regression test.
24538
24539         * arrays.cs: Fix compilation error.
24540
24541 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24542
24543         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24544         float rules to inssel-x86.brg: sane architectures with FP registers
24545         don't need to implement these rules.
24546
24547 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24548
24549         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24550
24551 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24552
24553         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24554         implementation of 32 bit systems.
24555
24556 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24557
24558         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24559         (Jeroen Zwartepoorte).
24560
24561 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24562
24563         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24564         the caller and the callee matches.
24565         
24566         * mini.c (mono_method_to_ir): Add comment.
24567
24568         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24569         signbit is missing on some platforms.
24570
24571 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24572
24573         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24574
24575         * mini.c (setup_jit_tls_data): Call the new function.
24576         
24577         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24578
24579         * mini-x86.c: Add experimental support for fast access to the lmf
24580         structure under NPTL/Linux 2.6.x.
24581
24582 2003-11-06  Martin Baulig  <martin@ximian.com>
24583
24584         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24585         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24586         the debugger.
24587
24588 2003-11-02  Martin Baulig  <martin@ximian.com>
24589
24590         * mini.c (inflate_generic_field): New static method.
24591         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24592         generic instance and the field is declared in a generic type, call
24593         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24594
24595 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24596
24597         * mini.h mini.c (mono_method_same_domain): New function to return
24598         whenever the caller and the callee are in the same domain.
24599
24600         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24601
24602 2003-10-30  Martin Baulig  <martin@ximian.com>
24603
24604         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24605         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24606         method parameters.
24607         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24608         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24609
24610 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24611
24612         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24613         propagation.
24614
24615         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24616         object here, so it is in the correct appdomain etc.
24617
24618 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24619
24620         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24621         already done.
24622         (mono_method_to_ir): Avoid freeing the type created returned from
24623         mono_type_create_from_typespec, since it is put into an internal cache
24624         by the function. Fixes pointer.exe.
24625
24626         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24627         trampolines for icalls and pinvokes as well. Fixes #33569.
24628
24629 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24630
24631         * mini.c: Update after appdomain changes.
24632
24633         * mini.c (mono_jit_compile_method_inner): Allways compile native
24634         method wrappers in the root domain, since there can only be one
24635         instance of them, whose address is stored in method->info.
24636
24637 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24638
24639         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24640         environment variable. Instead detect automatically whenever running
24641         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24642         valgrind.h.
24643
24644 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24645
24646         * trace.c, trace.h: New files that implement the new trace option
24647         parsing. 
24648
24649         * driver.c: Document new --trace options.
24650
24651         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24652         mini-x86.c: Apply:
24653
24654         -       if (mono_jit_trace_calls)
24655         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24656
24657         * mini.h: prototypes.
24658         
24659 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24662
24663         * mini.c inssel.brg: Implement typedefbyref opcodes.
24664
24665         * mini.c (mono_jit_compile_method): Remove unused local variable.
24666
24667         * mini.c (mono_jit_compile_method_inner): Ditto.
24668         
24669 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24672         
24673         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24674
24675 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24676
24677         * mini.c (mono_no_aot): Remove unused global variable.
24678
24679         * mini.c: Thread safety fixes.
24680
24681 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * mini.c (mono_create_class_init_trampoline): Add a lock around
24684         class_init_hash_addr.
24685
24686         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24687         #30073.
24688
24689         * mini.c: Decompose the NEWARR instruction before decomposing its
24690         arguments. Fixes #30073.
24691
24692 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24693
24694         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24695         convention.
24696
24697 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24698
24699         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24700
24701         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24702
24703         * driver.c: Add support for compiling icall wrappers to --compile.
24704
24705 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24706
24707         * inssel.brg: The empty value in class->interface_offsets is -1, not
24708         0. Fixes #49287.
24709
24710 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24711
24712         * objects.cs: New test for 'is' operator on an array of interfaces.
24713
24714 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24715
24716         * tramp-ppc.c: update trampoline code to support jumps
24717         and class initialization.
24718
24719 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24720
24721         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24722
24723         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24724
24725         * inssel.brg (OP_UNBOX): Remove unused rule.
24726
24727         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24728         region instead of one for each method. Fixes #47813.
24729
24730 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24731
24732         * exceptions.cs (test_0_nested_finally): New regression test for
24733         nested exception handlers.
24734
24735         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24736
24737         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24738
24739         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24740         inlining.
24741
24742         * mini.c (mono_method_check_inlining): Make the inlining limit 
24743         configurable by an environment variable.
24744         
24745         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24746
24747         * mini.h: Bump AOT file version.
24748
24749         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24750         token, store the image along with the token, since the token might not 
24751         refer to the same image as the method containing the relocation, 
24752         because of inlining.
24753
24754 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24755
24756         * mini.c (mono_precompile_assemblies): New function to compile
24757         all methods in all loaded assemblies.
24758
24759         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24760
24761         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24762         iassign and fassign to int*, since they can contain large negative
24763         values if the register is spilled. Also added some comments. Fixes
24764         #45817.
24765
24766         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24767         under Win32. Fixes #42964.
24768
24769 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24770
24771         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24772
24773         * aot.c: Added support for AOT compiling methods which contain calls
24774         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24775         handled.
24776         
24777         * driver.c (compile_all_methods): Run the compilation in a thread
24778         managed by mono. Fixes #44023.
24779
24780         * mini.c (mono_codegen): Print full method name in verbose output.
24781
24782         * mini-x86.c (mono_arch_patch_code): Fix warning.
24783         
24784         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24785         jumps, since the method we are jumping to might be domain-specific.
24786
24787         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24788
24789 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24790
24791         * inssel.brg: string chars are unsigned.
24792
24793 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24794
24795         * TODO: New todo item.
24796
24797         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24798         which calls mono_runtime_class_init and patches the call site to
24799         avoid further calls.
24800         (mono_arch_create_class_init_trampoline): New arch specific function 
24801         to create a class init trampoline.
24802         (create_trampoline_code): Generalized so it can create
24803         class init trampolines as well.
24804
24805         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24806         (mono_create_class_init_trampoline): New function to create and cache
24807         class init trampolines.
24808         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24809         vtable given the address of a class init trampoline. Used by the
24810         patching process.
24811         (mono_codegen): Generate a call to a trampoline instead of
24812         mono_runtime_class_init in LDSFLD[A].
24813         (mono_codegen): Add relocations for the new trampoline.
24814         
24815         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24816         MONO_PATCH_INFO_CLASS_INIT.
24817
24818         * mini.h: Bump AOT version number.
24819
24820         * aot.c: Create a copy of the loaded code instead of using the original
24821         so methods which call each other will be close in memory, improving
24822         cache behaviour.
24823         
24824         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24825         patch since it breaks the regression tests.
24826         
24827         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24828         for the register saving instruction sequence since the 
24829         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24830
24831 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * TODO: Fix todo item && remove another.
24834
24835 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24836
24837         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24838         previous checkin.
24839
24840         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24841         function of the module.
24842
24843         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24844         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24845         --no-aot command line option.
24846
24847 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24850         by Bernie Solomon (bernard@ugsolutions.com).
24851
24852         * inssel.brg: Refactor the interface offset table related code into
24853         its separate functions and add support for the AOT case.
24854
24855 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24856
24857         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24858         
24859         * aot.c: Added mono_aot_verbose variable and made all debugging
24860         output depend on the value of this variable.
24861
24862         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24863         method_label and info_label.
24864
24865         * mini.h mini-x86.c aot.c: Added a new relocation type 
24866         MONO_PATCH_INFO_IID for klass->interface_id.
24867
24868         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24869         the MonoJitInfo structure.
24870
24871         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24872         a non-root appdomain in shared mode.
24873
24874 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24875
24876         * aot.c: make aot loader less verbose. Remove free of unused variable.
24877
24878 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24879
24880         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24881
24882         * .cvsignore: Added *.dll.
24883
24884         * mini.c (mono_print_tree_nl): New function callable while debugging.
24885
24886         * mini.c (mono_print_code): Export this.
24887
24888         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24889         patched code.
24890
24891 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24892
24893         * mini.h (MonoCompile): Added 'jit_info' field.
24894
24895         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24896         the cfg structure, since it is needed by the AOT compiler.
24897
24898         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24899
24900         * aot.c: A major rewrite. Changes include:
24901         - save exception tables for methods which have them.
24902         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24903         to g_module_symbol.
24904         - reworked the file format so it is now much smaller and needs
24905         fewer relocation entries.
24906         
24907 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24908
24909         * aot.c (load_aot_module): Fix build bustage on platforms without
24910         Boehm GC.
24911
24912 2003-09-04  Martin Baulig  <martin@ximian.com>
24913
24914         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24915
24916 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24917
24918         * TODO: Some new optimization ideas.
24919
24920         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24921
24922         * aot.c: Save the optimization flags used to compile the code into
24923         the AOT module.
24924
24925         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24926         support emitting domain specific code.
24927         
24928         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24929         no longer domain neutral. It can be made domain neutral by compiling 
24930         with --optimize=shared.
24931
24932         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24933         between appdomains.
24934
24935         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24936         loading of AOT code.
24937
24938         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24939         
24940         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24941         if there is no domain neutrality information.
24942
24943 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24944
24945         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24946         format version into the generated library.
24947
24948         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24949         callee method into the caller since one of them could be shared.
24950
24951         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24952         system exceptions from AOT code now works.
24953
24954         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24955         method if it is domain neutral and the callee is not.
24956
24957         * graph.c (cfg_emit_one_loop_level): Fix warning.
24958
24959 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24960
24961         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24962         last checkin.
24963
24964 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24965
24966         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24967         is needed  by code which is executed before mono_runtime_init ().
24968         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24969         
24970         * mini.c (mono_thread_abort): Fix warning.
24971         (mono_jit_compile_method): Call static constructor in the AOT case too.
24972
24973         * aot.c (mono_compile_assembly): Fix warning.
24974
24975 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24976
24977         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24978
24979 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24980
24981         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24982
24983         * cpu-pentium.md: Fix the length of call opcodes so they include the
24984         ESP restoring instruction. Fixes #47968.
24985
24986 2003-08-28  Martin Baulig  <martin@ximian.com>
24987
24988         * mini-x86.c (mono_arch_call_opcode): Added support for
24989         MONO_TYPE_GENERICINST.
24990
24991         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24992
24993 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24994
24995         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24996         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24997
24998         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24999         metadata_section.
25000
25001 2003-08-26  Martin Baulig  <martin@ximian.com>
25002
25003         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25004         when reporting an error, set this to the actual error location.
25005         (mono_method_to_ir): Report the correct error location if
25006         get_basic_blocks() returned an error.
25007
25008 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25009
25010         * mini.c (mono_type_blittable): OBJECT is not blittable.
25011         (mono_method_blittable): Methods which have marshalling descriptors
25012         are not blittable either. Fixes #47842.
25013
25014 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25015
25016         * driver.c mini.c: Use an environment variable instead of a global 
25017         variable. Also fix the build.
25018
25019         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25020         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25021         reporting this. 
25022
25023         * driver.c mini.c: Added --with-valgrind option to turn off some
25024         code which prevents mono from running under valgrind.
25025
25026         * mini.c (mono_emit_call_args): Fixed warning.
25027
25028         * mini.c (mono_emulate_opcode): Fixed warning.
25029
25030 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25031
25032         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25033         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25034         regalloc.c, regalloc.h: specify available registers in arch-specific
25035         code and support floats in the regallocator (patch by Laurent Morichetti 
25036         <l_m@pacbell.net>)
25037
25038 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25039
25040         * mini.c: mono_thread_current() can be called only after
25041         mono_runtime_init(): rearrange code to not call it early on.
25042
25043 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25044
25045         * mini.c: allocate jump tables in the code mempools.
25046
25047 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25048
25049         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25050         freed.
25051
25052 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25053
25054         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25055         12 to 16.  This fixes bug #47453.
25056
25057
25058 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25059
25060         * mini-ppc.c: fixed indexed load and unsigned compares.
25061
25062 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25063
25064         * mini.c: reenabled installation of handler for
25065           thread abort signal.
25066
25067 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25068
25069         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25070         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25071         until it's fixed and actually useful.
25072
25073 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25074
25075         * inssel-long32.brg: couple more opcodes implemented.
25076
25077 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25078         
25079         * mini-sparc.c: Even more opcodes implemeted.
25080
25081 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25082
25083         * mini-sparc.c: More opcodes implemented.
25084
25085 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25086
25087         * mini-sparc.c: More opcodes implemented.
25088
25089 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25090
25091         * inssel-sparc.brg: Add some needed rules.  Direct
25092         copy from PPC.
25093         * Makefile.am: Use inssel-sparc.brg
25094         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25095         an assert happy for now.
25096
25097 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25098
25099         * mini-sparc.c: Fixed compile errors.
25100         * exceptions-sparc.c: Same.  We now produce a mono binary 
25101         on sparc-linux.  Yea.
25102
25103 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25104
25105         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25106         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25107         They compile, but do not work.
25108
25109 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25110
25111         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25112         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25113         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25114         (ct@gentoo.org).
25115
25116 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * mini.c: more opcodes implemented and better support for generics.
25119
25120 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25121
25122         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25123         * mini.c, mini.h: first cut at generics support: some new instructions 
25124         added and changed the behaviour of some of the existing ones.
25125
25126 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25127
25128         * mini.c: Removed definition of metadata_shared mutex here.
25129
25130 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25131
25132         * mini-x86.c: make vararg calls work for instance methods.
25133
25134 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25135
25136         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25137         returns the arguments in a separte list, now.
25138
25139 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25140
25141         * aot.c, mini.c: updates for array type representation changes.
25142
25143 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25144
25145         * mini.c: register function to perform jit shutdown.
25146
25147 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25148
25149         * mini.c: use a faster allocator if possible.
25150
25151 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25152
25153         * aot.c: some cleanups and portability changes.
25154
25155 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25156
25157         * mini.c: use faster allocation for CEE_BOX if possible.
25158
25159 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25162         Moved inlined mempcy code to its own function so that is can be
25163         reused. Added an inline memset function as well (optimized initobj).
25164         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25165
25166 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25167
25168         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25169
25170 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25171
25172         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25173         arch code can setup the cpu for CLR execution, if needed.
25174         We use it on x86 to set the precision of FP operations.
25175
25176 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25177
25178         * mini.c: disable some optimizations if we can guess they'll cost too
25179         much for a given method.
25180
25181 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25182
25183         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25184         
25185 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25186         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25187         info collection support.
25188
25189 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25190
25191         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25192         is now implemented in the profiling API. Get rid of a couple of
25193         unnecessary global variables.
25194
25195 2003-06-15  Nick Drochak <ndrochak@gol.com>
25196
25197         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25198         * cpu-g4.md: add op_bigmul and op_bigmul_un
25199         * cpu_pentium.md: add op_bigmul_un
25200         * inssel-long32.brg: add rule for unsigned bigmul
25201         * mini-ops.h: define OP_BIGMUL_UN
25202         * mini-x86.c: THE BUG: handle (un)signed properly
25203         * mini.c: choose unsigned opcode if needed.
25204         This set of patches fixes bug #44291
25205
25206 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25207
25208         * mini.c (optimize_branches): improved to handle all kinds of
25209         conditional branches.
25210
25211 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25212
25213         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25214         don't raise exceptions.
25215
25216 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25217
25218         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25219         to arch-specific files.
25220
25221 2003-06-09  Martin Baulig  <martin@ximian.com>
25222
25223         * Makefile.am (libs): Added $(LIBGC_LIBS).
25224
25225 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25226
25227         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25228         and OP_ATAN (fixes bug#44293).
25229
25230 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25231
25232         * Makefile.am, mini-x86.c: rename cpu description array to
25233         pentium_desc, since some compilers define the 'pentium' preprocessor
25234         symbol.
25235
25236 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25237
25238         * mini.c (mini_select_instructions): add explicit branch if the
25239         following block is not the false target of a conditional branch -
25240         we need this with any optimization that reorder or remove bblocks
25241
25242         * mini.c (optimize_branches): bug fixes
25243
25244 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25245
25246         * mini.c (mono_method_to_ir): inline static readonly fields
25247
25248         * ssa.c (fold_tree): start cfold support for long (very simple
25249         cases only)
25250
25251         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25252
25253 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25254
25255         * inssel.brg: fixed memcpy (bug #44219).
25256
25257 2003-06-05  Dick Porter  <dick@ximian.com>
25258
25259         * driver.c: Set the glib log levels to not abort if g_message
25260         recurses.
25261
25262         g_set_prgname() has to happen before mini_init() so that the
25263         process handle gets the info.
25264         
25265 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25266
25267         * driver.c: add intrins to the default optimizations to get wider
25268         exposure.
25269
25270 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25271
25272         * mini.h: some large basic blocks will overflow a 16-bit
25273         integers for symbolic registers.
25274
25275 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25276
25277         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25278         (mono_arch_output_basic_block): fix bug 43499 
25279
25280 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25281
25282         * mini.c: kill duplicated definition of mono_debug_format.
25283
25284 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25285
25286         * mini-x86.c, arrays.cs: fixed register allocation bug.
25287
25288 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25289
25290         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25291
25292         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25293
25294 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25295
25296         * mini.c:
25297         (print_method_from_ip): also print source location information if
25298         available.
25299
25300 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25301
25302         * mini.c (mono_find_block_region): bug fix in region code
25303         (mini_method_compile): enable removing unreachable code again, but
25304         only in methods without exception clauses.
25305
25306 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25307
25308         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25309         Implemented arglist opcode and handling of TypedReference type.
25310         Fixed x86 call convention when a structure is returned.
25311         Minimal support for calling static vararg methods.
25312
25313 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25314
25315         * mini.c (mini_method_compile):  always remove unreachable code,
25316         because the code in them may be inconsistent  (access to dead
25317         variables for example).
25318
25319 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25320
25321         * driver.c, debug-mini.c: warning fixes.
25322
25323 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25324
25325         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25326
25327 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25328
25329         * mini.c: thread-static fields are registered in mono_class_vtable(),
25330         so ensure the function is called before checking for them.
25331
25332 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25333
25334         * mini.c (optimize_branches): fix for bug 43586
25335
25336         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25337         overflow (fixes Bug #43639)
25338
25339 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * mini.c, objects.cs: allow the use of stobj for primitive types.
25342
25343 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * mini.c: be less strict about argument checking until we support
25346         running the verifier.
25347
25348 2003-05-27  Nick Drochak <ndrochak@gol.com>
25349
25350         * basic-long.cs: tests for (ulong)int * (ulong)int also
25351         * mini.c: use the same trick for (ulong)int * (ulong)int
25352
25353 2003-05-27  Nick Drochak <ndrochak@gol.com>
25354
25355         * basic-long.cs: add regression test for (long)int * (long)int
25356         * cpu-pentium.md: add op_bigmul specification
25357         * inssel-long32.brg: add OP_BIGMUL rule
25358         * mini-ops.h: add OP_BIGMUL
25359         * mini-x86.c: register allocator: handle case where src1 needs to be
25360         in EAX.
25361         * mini.c: substitute special BIGMUL opcode in the tree for 
25362         (long)int * (long)int
25363
25364 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25365
25366         * jit-icalls.c: call the type ctor on field access if needed.
25367
25368 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25369
25370         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25371         to a method (including results of ldelema, bug#43207).
25372
25373 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25374
25375         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25376         colors to show exception handler blocks.
25377
25378         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25379         (fix for pinvoke7.cs).
25380
25381 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * mini.h, mini.c: ensure correct initialization order for types that
25384         require it. Prepare for lazy compilation of jit icall wrappers.
25385         Provide a name for opcode emulation to reduce unneeded mallocing.
25386
25387 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25388
25389         * mini-x86.c: better register restoring code and profiling
25390         support for tail calls.
25391
25392 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25393
25394         * mini.h, driver.c: prepare for leaf methods optimization.
25395
25396 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * mini.c: get targets of branches before converting a method.
25399
25400 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25401
25402         * mini.c (optimize_branches): added some experimental code (disbaled) 
25403
25404 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25405
25406         * mini.c (optimize_branches): fix branch to branch optimization 
25407
25408         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25409
25410         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25411
25412         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25413
25414         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25415         if needed.
25416
25417 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25418
25419         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25420         enable use of interface variables again.
25421
25422         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25423         I1 to registers because there is no simply way to sign extend 8bit
25424         quantities in caller saved registers on x86.
25425
25426         * inssel-float.brg: set costs of some rules to 2 so
25427         that monobure always select the arch. specific ones if supplied,
25428         regardless of the order we pass the files to monoburg.
25429
25430 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25431
25432         * mini.c, mini-x86.c: since the magic trampoline for jumps
25433         can't patch the code directly, we do it as soon as the
25434         method gets compiled.
25435
25436 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25437
25438         * mini-x86.c, mini.h: introduce a new patching method
25439         to support CEE_JMP and tail calls.
25440         * mini.c: obey tail.call. Don't precompile methods target
25441         of CEE_JMP.
25442         * tramp-x86.c: new trampoline code to handle methods
25443         reached through a jump.
25444
25445 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25446
25447         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25448         bit values to registers
25449
25450 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25451
25452         * mini.c (mono_compile_get_interface_var): share interface
25453         variables if possible.
25454
25455 2003-05-16  Martin Baulig  <martin@ximian.com>
25456
25457         * debug-mini.c (mono_init_debugger): New function to initialize
25458         the debugger.  This is not in the debugger since it needs to
25459         access some of mini's internals.
25460
25461 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25462
25463         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25464
25465 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25466
25467         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25468         for value type handling.
25469
25470 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25471
25472         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25473         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25474
25475 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25476
25477         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25478           the constructor through a proxy.
25479
25480 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25481
25482         * jit-icalls.c, inssel.brg: fixes to array element address
25483         calculations.
25484
25485 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25486
25487         * mini-x86.c (is_regsize_var): allocate pointer to registers
25488
25489 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25490
25491         * driver.c: fixed typo, added intrins to the set of optimizations
25492         tested with regressions.
25493
25494 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25495
25496         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25497         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25498         test case.
25499
25500 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25501
25502         * inssel.brg: remove some common pop instructions without side effects
25503
25504 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25505
25506         * inssel-x86.brg: fixed thinko in int to double conversions.
25507
25508 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25509
25510         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25511
25512 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25513
25514         * inssel-long32.brg: two more missing instructions.
25515
25516 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25517
25518         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25519         if not already set.
25520
25521 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25522
25523         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25524         correctly.
25525
25526         * basic-float.cs: Added tests for negative zero.
25527
25528 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25529
25530         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25531         a couple of missing operations for long casts, with test cases.
25532
25533 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25534
25535         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25536
25537 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25538
25539         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25540         code size estimation.
25541
25542 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25543
25544         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25545         abstract methods (fix bug 42542)
25546
25547         * aot.c: add ability to handle array types
25548         
25549 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25550
25551         * mini.c: Call the _specific versions of the object allocation
25552         functions if possible.
25553
25554 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25555
25556         * driver.c: call setlocale ().
25557
25558 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25559
25560         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25561         windows build.
25562
25563 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25564
25565         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25566
25567         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25568         wrappers (fix bug 42122)
25569
25570 2003-05-04  Martin Baulig  <martin@ximian.com>
25571
25572         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25573
25574         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25575         s/mini_set_defaults/mono_set_defaults/g.
25576
25577 2003-05-04  Martin Baulig  <martin@ximian.com>
25578
25579         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25580
25581 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25582
25583         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25584         (reported by Don Roberts).
25585
25586 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25587
25588         * mini.c: temporarily work around two bugs for this release.
25589
25590 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25591
25592         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25593         that contains -export-dynamic and it makes using the ld script
25594         useless.
25595         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25596
25597 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25600         specific cpu.
25601
25602 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25603
25604         * mini.c: make sure leave calls all the needed finally blocks,
25605         even when the target jumps out of multiple exception clauses.
25606
25607 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25608
25609         * ldscript, Makefile.am: add linker script to reduce the number of
25610         exported symbols (should also fix the issues with libwine defining
25611         some of the same symbols in io-layer).
25612
25613 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25614
25615         * driver.c (mini_main): Avoid assertion when no file name is given on 
25616         the command line.
25617
25618 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25619
25620         * driver.c: added --version/-V command line option.
25621         Added the inline optimization in the regression tests.
25622
25623 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25624
25625         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25626         to the type in the method signature (fixes bug#42134).
25627
25628 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25629
25630         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25631
25632 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25633
25634         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25635
25636 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25637
25638         * driver.c: fixed bug #42100.
25639
25640 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25641
25642         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25643
25644 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * mini.c: moved most of the code required to do inlining to its own
25647         function so it can be reused. Inline also ctors if appropriate.
25648
25649 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25650
25651         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25652         the runtime can call mono API functions.
25653
25654 2003-04-27  Martin Baulig  <martin@ximian.com>
25655
25656         * debug-mini.c (mono_debug_init_method): Added
25657         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25658         send a notification to the debugger.
25659
25660         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25661         running in the Mono Debugger, just pass the breakpoint number to
25662         mono_debug_init_method().
25663
25664         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25665
25666 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25667
25668         * mini.c: allow some more unsafe compares.
25669
25670 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25671
25672         * mini-x86.c, Makefile.am: make distcheck works (partially from
25673         a patch by Richard Lee <r.h.lee@attbi.com>).
25674         * regset.c, regset.h: removed, they are unused.
25675
25676 2003-04-25  Dick Porter  <dick@ximian.com>
25677
25678         * driver.c: Usage reports the name as 'mono' not 'mini'
25679         * exceptions-x86.c: Build and run on freebsd
25680
25681 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25682
25683         * Makefile.am: install the program with the 'mono' name and
25684         the library as libmono instead of mini and libmini.
25685
25686 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25687
25688         * driver.c: provide the APIs for the embedding interface of the old jit.
25689
25690 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25691
25692         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25693
25694 2003-04-23  Martin Baulig  <martin@ximian.com>
25695
25696         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25697
25698         * driver.c: Added `--debug' command line argument to enable
25699         debugging support.
25700
25701 2003-04-23  Martin Baulig  <martin@ximian.com>
25702
25703         * debug.[ch]: Removed.  The code is now in
25704         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25705
25706         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25707         last six months.
25708
25709 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25710
25711         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25712
25713 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25714
25715         * mini.c:
25716         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25717         mono_domain_finalize.
25718         (mini_method_compile): use mono_method_profile* if the the option is
25719         enabled.
25720
25721 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25722
25723         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25724         methods with their wrapper.
25725
25726         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25727         methods with their wrapper.
25728
25729         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25730         their wrapper.
25731
25732         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25733         wrapper.
25734
25735         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25736         methods.
25737
25738 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25739
25740         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25741
25742 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25743
25744         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25745         of the mempool. This is slightly faster and uses less memory
25746
25747 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25748
25749         * mini.c: avoid O(n) allocation for variables.
25750
25751 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25752
25753         * mini.c: handle items on the stack after inlining methods.
25754
25755 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25756
25757         * mini.c: make the method->opcode optimization dependent
25758         on MONO_OPT_INSTRINS and do it lazily.
25759
25760 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25761
25762         * driver.c: print overall results at the end of regression run.
25763
25764 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25765
25766         * inssel.brg: don't overwrite symbolic registers.
25767
25768 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25769
25770         * inssel-x86.brg: fix conversion from long to float.
25771
25772 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25773
25774         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25775
25776 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25777
25778         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25779
25780         * driver.c: Added --print-vtable option as in the old JIT.
25781
25782 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25783
25784         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25785
25786 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25787
25788         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25789
25790 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25791
25792         * mini.c regalloc.c regalloc.h: Fix memory leak.
25793
25794 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25795
25796         * aot.c (mono_aot_get_method): register all used strings
25797
25798 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25799
25800         * mini.c: always intern strings references with ldstr at compile time.
25801
25802 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25803
25804         * Makefile.am: add BUILT_SOURCES.
25805
25806 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25807
25808         * driver.c: give a better error message when the assembly to execute
25809         doesn't have an entry point.
25810
25811 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25812
25813         * Makefile.am: added hack for automake
25814
25815         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25816         correct sematics.
25817
25818         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25819
25820 22003-04-07  Martin Baulig  <martin@ximian.com>
25821
25822         * Makefile.am: Added Makefile.am.
25823
25824         * debugger-main.c: Removed, this is now in the debugger where it
25825         belongs.
25826
25827         * mini.pc.in: Call this package `mini' for the moment.
25828
25829
25830
25831
25832
25833
25834
25835
25836
25837
25838
25839
25840
25841
25842