2010-07-05 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
4
5         * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
6         'this' is always passed as the first argument, before the vtype ret arg. This
7         simplifies get_this_arg_reg () and LLVM integration.
8
9 2010-07-05  Martin Baulig  <martin@ximian.com>
10
11         * exceptions-x86.c (mono_arch_handle_exception): Port this to
12         Windows; apply my patch from r159782 in the mono-2-6 branch.
13
14 2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15
16         * Makefile.am: Don't build the debug assembler files if we're building without
17         debugger support.
18
19 2010-07-05  Zoltan Varga  <vargaz@gmail.com>
20
21         * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
22
23 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
24
25         * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
26         length.
27
28         * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
29         regs [ARMREG_FP] instead.
30
31         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
32
33         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
34         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
35
36         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
37
38         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
39
40         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
41
42         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
43         without IMT_REG defined (ARM).
44
45         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
46         the trampolines.
47
48 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
51
52 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
53
54         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
55         definitions to match their declarations and vice-versa.
56
57 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
58
59         * Makefile.am (common_sources): Add mini-llvm.h.
60
61         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
62
63 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
64
65         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
66         compiling.
67
68 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
69
70         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
71         implemt the option of loading the llvm backend from a module so
72         that we can have a single binary and the bloat from llvm is
73         only experienced when it is actually loaded.
74
75 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
76
77         * mini-llvm.c: remove direct access to mono_defaults.
78
79 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
80
81         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
82         a no-op.
83
84         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
85
86         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
87         is now mono_arch_nullify_class_init_trampoline ().
88         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
89         opcodes, they are no longer needed.
90
91         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
92         now mono_arch_nullify_class_init_trampoline ().
93         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
94         opcodes, they are no longer needed.
95
96         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
97         vtable on platforms which support it.
98
99         * driver.c: Print the full LLVM version we are compiled against in --version.
100
101         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
102         a bit better. Decode nesting information to fix eh support for llvm+aot.
103
104         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
105         methods.
106
107         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
108
109         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
110         is always passed as the first argument, before the vtype ret arg. This simplifies
111         get_this_arg_reg () and LLVM integration.
112
113 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
114
115         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
116         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
117         most of the vcall specific code to mono_vcall_trampoline () from
118         common_call_trampoline ().
119
120 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
121
122         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
123         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
124         if the callsite is patched.
125
126         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
127         the llvm branch.
128
129         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
130         the trampoline in the xdebug info.
131
132         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
133         as well.
134
135 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
136
137         * mini-llvm.c: Fix a few problems exposed by make check.
138
139 2010-06-25  Mark Probst  <mark.probst@gmail.com>
140
141         * mini-trampolines.c (common_call_trampoline): An ugly hack to
142         work around a potentially very hard to fix problem with inflating
143         generic methods.
144
145 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
146
147         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
148         problem has been fixes.
149
150 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
151
152         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
153
154         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
155         It might be be better to define a MonoGCJitOptions structure later and have the
156         GC return that.
157
158         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
159
160         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
161
162         * debugger-agent.c (get_objref): Implement support for sgen.
163
164         * driver.c: Remove the unused gc_wrapper.h include.
165
166         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
167         implementation.
168
169 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
170
171         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
172
173         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
174         in MonoCompile.
175
176         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
177         instead.
178
179 2010-06-23  Miguel de Icaza  <miguel@novell.com>
180
181         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
182         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
183
184         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
185         it only for Boehm diagnostics.
186
187         * Makefile.am: Make the file a bit more consistent.
188
189         * debug-debugger.c: Wrap the entire file with an #ifdef
190         MONO_DEBUGGER_SUPPORTED to simplify the build.
191
192         * Makefile.am: Fix the opcodes build issue by including the
193         source, not by including the .lo file directly
194
195         Always bring the MDB sources into the build, to drop the
196         dependency on the AM_CONDITIONAL from configure.in as the hard
197         debugger supports Boehm, but not Sgen, this simplifies the build. 
198
199         * Renamed the *.s files into *.S
200
201 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
202
203         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
204         wb for now on 64bits systems while issues with valuetype returns
205         are not fixed.
206
207 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
208
209         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
210         passes by calling createStandardFunctionPasses ().
211
212 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
213
214         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
215
216 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
217
218         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
219         MONO_INST_FAULT.
220
221         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
222         allow better optimization if the OP_LDADDR which caused the flag to be set was
223         optimized away.
224
225         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
226
227         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
228         the type token.
229
230         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
231
232         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
233
234 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
235
236         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
237         to handle the code sequence generated for non-near calls. Fixes #616056.
238
239 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
240
241         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
242
243         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
244
245         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
246         nesting clause too.
247         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
248         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
249         trampoline which saves the context, so changes made to callee saved registers in
250         finally clauses are visible to a nesting catch clause.
251
252         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
253
254         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
255         in LLVM compiled code.
256         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
257         the finally handler has ran.
258
259         * mini.h (ResumeState): New structure containing information required to resume
260         exception handling after executing LLVM compiled finally clauses.
261
262         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
263         bit, by passing all the registers as one argument.
264
265 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
266
267         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
268         to avoid an assert.
269
270 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
271
272         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
273
274         * aot-compiler.c aot-runtime.c: Fix LLVM support.
275
276         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
277         pad, branch to a new bblock instead.
278
279         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
280         orig_method.
281
282         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
283
284         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
285
286 2010-06-17  Geoff Norton  <gnorton@novell.com>
287
288         * mini-arm.h:
289         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
290         can be used by sgen.
291
292 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
293
294         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
295
296         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
297         fails.
298
299         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
300         the ip done by throw_exception (), it is not needed for corlib exceptions.
301
302 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
303
304         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
305         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
306         of size > 5 words. This support fast barriers for value types up to
307         256/512 bytes which     beyond that the copying itself is the major issue.
308
309         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
310         for gsharing, so use it.
311
312         This eliminate all calls to mono_value_copy from managed code in
313         gmcs, fsharp and ipy.
314
315         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
316
317         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
318         performance kept
319
320         * mini.c (mini_init): Register new icall.
321
322 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
323
324         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
325         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
326
327 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
328
329         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
330         value types as the overhead is huge. Manually expand it up to 5 words to
331         avoid code bloat.
332
333         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
334         is an exception that performance is dominated by mono_value_copy.
335
336         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
337
338 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
339
340         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
341         trampolines on x86, since those have their own cconv.
342
343         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
344         exception trampolines.
345
346         * tramp-x86.c: Add xdebug info for a few trampolines.
347
348         * mini-llvm.c: Set the name of the arguments.
349
350         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
351         using a block address if using the LLVM mono branch.
352
353         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
354         trampolines.
355
356 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
357
358         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
359
360         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
361
362         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
363
364         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
365
366         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
367         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
368         to identify the vtable slot address plus the method which needs to be compiled.
369
370         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
371         using llvm.
372
373         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
374         'this' is always passed as the first argument, before the vtype ret arg. This
375         simplifies get_this_arg_reg () and LLVM integration.
376
377         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
378         the latest changes.
379
380         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
381         these trampolines.
382
383         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
384
385         * mini-llvm.c: Fix compilation with llvm 2.6.
386
387         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
388
389         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
390         defined.
391
392         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
393         is always passed as the first argument, before the vtype ret arg. This simplifies
394         get_this_arg_reg () and LLVM integration.
395
396 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
397
398         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
399
400         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
401         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
402         translate into much nicer code.
403
404 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
405
406         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
407         parameter index information. Use this to simplify a lot of code.
408
409         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
410
411 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
412
413         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
414         to fix infinite generic recursion. Fixes #612702.
415
416 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
417
418         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
419         imt trampoline per imt slot when using LLVM.
420
421 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
422
423         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
424
425 2010-06-09  Levi Bard  <levi@unity3d.com>
426
427         * debugger-agent.c: Clear unloaded types on appdomain unload.
428
429 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
430
431         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
432         Fixes #612206.
433
434         * exceptions.cs: Add a test.
435
436 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
437
438         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
439
440         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
441
442         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
443         so it doesn't have to do it.
444
445         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
446         process does not mix with ours.
447
448         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
449         ones.
450
451         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
452         loads/stores which can throw exceptions inside clauses.
453
454 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
455
456         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
457         one ENDFINALLY.
458
459         * mini.c (mini_init): Register mono_resume_unwind as an icall.
460
461 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
462
463         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
464
465         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
466         locals.
467
468 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
469
470         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
471         appdomain.
472
473 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
474
475         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
476         Use a separate generic class init trampoline for llvm, since it needs a different
477         signature.
478
479         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
480         includes the location of this/rgctx.
481
482         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
483         branch.
484
485 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
486
487         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
488
489         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
490         clause.
491
492 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
493
494         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
495         says so.
496
497         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
498
499         * aot-compiler.c (patch_to_string): New debugging helper function.
500
501 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
502
503         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
504         trampoline.
505
506         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
507
508         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
509
510         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
511
512         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
513         clauses.
514
515         * mini.c (create_jit_info): Print EH clause info for LLVM too.
516
517 2010-05-28  Mark Probst  <mark.probst@gmail.com>
518
519         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
520         cpobj with reference types.
521
522 2010-05-28  Mark Probst  <mark.probst@gmail.com>
523
524         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
525         write barrier for reference types.
526
527 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
528
529         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
530         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
531
532 2010-05-31  Martin Baulig  <martin@ximian.com>
533
534         Fix #608271.
535
536         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
537         clear_breakpoint() on all breakpoint events and remove them from the list.
538
539 2010-05-27  Martin Baulig  <martin@ximian.com>
540
541         Fix #605698.
542
543         * debugger-agent.c (method_commands, type_commands): Temporarily
544         set the appdomain while executing this method; do all metadata
545         calls in the debuggee's appdomain where user assemblies are loaded.
546
547 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
550
551 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
554
555 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
556
557         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
558         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
559         be referenced even after the header is freed.
560
561         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
562         section.
563
564 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
565
566 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
567
568         * genmdesc.c (main): Fixing the detection of the nacl switch.
569
570         Code is contributed under MIT/X11 license.
571
572 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
573
574         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
575
576         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
577
578         * mini.h (LLVM_CHECK_VERSION): New helper macro.
579
580 2010-05-25  Miguel de Icaza  <miguel@novell.com>
581
582         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
583         the Perl program
584
585         * genmdesc.c: Added support for nacl: key on the machine
586         description files to support the extra space required by Google
587         Native Client.
588
589 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
590
591         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
592
593 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
594
595         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
596         mono_runtime_class_init_full ().
597         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
598
599 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
600
601         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
602
603 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
604
605         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
606         two are not the same on ilp32.
607
608 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
609
610         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
611         added by mistake.
612
613         * mini-ppc.c: Fix the DISABLE_JIT build.
614
615 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
616
617         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
618         (make_writable): Remove this unused function.
619
620 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
621
622         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
623         structure. Make the labels to plt entries local symbols instead of assembler local
624         labels, since tha latter causes problems for the iphone linker.
625
626 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
627
628         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
629
630 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
631
632         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
633         (ppc_patch_full): Ditto.
634
635         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
636
637         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
638         if gshared is enabled, to avoid asserts in the trampoline code.
639
640         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
641         on ia64.
642
643 2010-05-15  Geoff Norton  <gnorton@novell.com>
644
645         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
646         xdebug mode.
647
648 2010-05-14  Geoff Norton  <gnorton@novell.com>
649
650         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
651         misaligned stack on darwin.
652
653 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
654
655         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
656         arm.
657
658 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
659
660         * xdebug.c: Fix ARM support.
661
662 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
663
664         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
665         and do most of the work on the normal stack.
666         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
667
668 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
669
670         * aot-compiler.c: Put non-code data into the .rodata section on linux.
671
672 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
673
674         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
675
676 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
677
678         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
679         and do most of the work on the normal stack.
680
681 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
682
683         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
684         and do most of the work on the normal stack even if sigaltstack is disabled.
685
686 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
687
688         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
689         UCONTEXT_REG_ constants are available on linux as well.
690         (mono_arch_monoctx_to_sigctx): Ditto.
691         (mono_arch_ip_from_context): Ditto.
692
693 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
694
695         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
696         other domains.
697
698 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
699
700         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
701         no longer needed.
702
703 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
704
705         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
706         if a breakpoint cannot be inserted.
707
708 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
709
710         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
711
712 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
713
714         * debugger-agent.c (frame_commands): Return an error instead of asserting if
715         no JIT info is found for the method.
716
717 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
718
719         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
720         in debug printf.
721
722 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
723
724         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
725         a list of arch specific trampolines.
726
727         * aot-compiler.c (emit_trampolines): Use it.
728
729 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
730
731         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
732         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
733         get rid of the _full from their name.
734
735 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
736
737         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
738         get_nullified_class_init_trampoline to remove some code duplication.
739
740 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
741
742         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
743         attach.
744
745 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
746
747         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
748
749         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
750
751         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
752         there is no need to jump through the first plt entry.
753
754         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
755
756         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
757         arch-specific function.
758         (mono_aot_get_plt_info_offset): Ditto.
759
760         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
761         mono_arch_init () to register jit icalls called from full-aot trampolines.
762         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
763         to mini-<ARCH>.c.
764
765         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
766         the specialized throw corlib exception trampoline, use a variant of the normal
767         trampoline along with a new C function which does the call to
768         mono_exception_from_token (), just like on x86.
769
770 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
771
772         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
773         Reorganize the full aot trampoline creation functions, instead of taking a bunch
774         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
775         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
776         creation functions on architectures which have the full-aot ones.
777
778 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
779
780         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
781
782 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
783
784         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
785         explicitly, this seems to be required by some gcc versions at -O2.
786
787         * mini-arm.c: Ditto.
788
789 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
792         has_target delegate invokes.
793
794 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
795
796         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
797         info fields.
798
799         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
800         add patches/unwind info arguments, move to mini.c.
801
802         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
803
804 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
805
806         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
807         command which returns full path names.
808
809 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
810
811         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
812         code_size output variable.
813
814         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
815         mono_get_lmf_addr.
816         
817 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
818
819         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
820         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
821         (mono_arch_cpu_enumerate_simd_versions): Ditto.
822
823 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
824
825         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
826         apple assembler.
827
828 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
829
830         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
831
832 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
833
834         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
835
836 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
837
838         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
839
840 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
841
842         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
843         line number support works with eglib.
844
845 2010-04-27  Miguel de Icaza  <miguel@novell.com>
846
847         * driver.c, mini.c: Since linking with LLVM makes the default Mono
848         dirty an extra 70kb pages on startup we are now going to choose a
849         different strategy: ship mono and mono-llvm binaries, with the
850         second being the one that links with LLVM and defaults to LLVM
851         being enabled.
852
853 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
854
855         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
856         Implement full-aot support on x86.
857
858         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
859         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
860         the first register returned by get_global_int_regs ().
861
862         * cpu-x86.md: Fix the length of insertx_u1_slow.
863
864         * iltests.il.in: Disable tail call tests when running with full-aot.
865
866 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
867
868         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
869
870 2010-04-24  Mark Probst  <mark.probst@gmail.com>
871
872         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
873         in the initializer, because it's non-constant.
874
875 2010-04-23  Miguel de Icaza  <miguel@novell.com>
876
877         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
878         of LLVM on by default.   Used for buildbots and other setups.
879
880 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
881
882         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
883
884 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
885
886         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
887         initonly static fields when using moving GC.
888
889         Contributed under MIT/X11 license.
890
891 2010-04-23  Geoff Norton  <gnorton@novell.com>
892
893         * mini-amd64.h: Darwin x86_64 support.
894
895 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
896
897         * exceptions-arm.c: Remove platform checks in favor of configure checks.
898
899 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
900
901         * exceptions-arm.c: Add Android support for sigcontext structure.
902
903 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
904
905         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
906         wrappers correctly now that their wrapper info is NULL.
907
908 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
909
910         * mini.c (mono_jit_compile_method_inner): Avoid calling
911         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
912
913 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
914
915         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
916         so the latter can be #ifndef DISABLE_JIT-ed.
917
918         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
919
920 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
921
922         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
923
924 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
925
926         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
927         stack.
928
929 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
930
931         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
932         calling mono_class_num_methods (). Fixes #592244.
933
934 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
935
936         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
937
938         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
939
940 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
941
942         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
943         version.
944         * (handle_alloc): Ditto.
945         (mono_method_to_ir): Remove the constrained call restriction added by a previous
946         change, its not needed anymore.
947
948 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
949
950         * mini-posix.c (sigusr1_signal_handler): Fix build on
951         non x86/amd64 systems.
952
953 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
954
955         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
956         calls where the constrained class needs a context. Fixes #595863.
957
958         * iltests.il.in: Add a test.
959
960 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
961
962         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
963         2.6/SVN seems to have broken support for them.
964
965 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
966
967         * mini-llvm.c: Fix support for LLVM 2.6.
968
969 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
970
971         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
972         MonoInternalThread belonging to the thread.
973
974 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
975
976         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
977         unsafe optimization that will remove bound checks.
978
979 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
980
981         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
982         CompareExchange not to be inlined for I8.
983
984         Contributed under MIT/X11 license.
985
986 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
987
988         * array.cs: Add tests for cast between primitive array types.
989
990 2010-04-07 Andreia Gaita  <avidigal@novell.com>
991
992         * Makefile.am: create a convenience library for moon to link with
993
994 2010-04-07 Paolo Molaro <lupus@ximian.com>
995
996         * method-to-ir.c: optimize array accesses from generic interfaces.
997
998 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
999
1000         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
1001
1002 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1003
1004         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
1005         of marshalbyref classes.
1006
1007         Fixes #515884.
1008
1009 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1010
1011         * aot-compiler.c (emit_exception_debug_info): Encode try holes
1012         information.
1013
1014         * aot-runtime.c (decode_exception_debug_info): Decode try holes
1015         information.
1016
1017         * mini.h: Increase AOT version.
1018
1019 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
1020
1021         * mini-x86.h: Only enable soft debugger when using sigaction or on
1022         Windows. Fixes build on Haiku (lacks siginfo_t).
1023
1024         Code is contributed under MIT/X11 license.
1025
1026 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
1027
1028         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1029         BeOS-style signal handlers.
1030
1031         Code is contributed under MIT/X11 license.
1032         
1033 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1036
1037 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1038
1039         * mini-exceptions.c: Fix win32 build.
1040
1041 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1042
1043         * mini.c, driver.c: Call mono_gc_base_init() before
1044         mono_debug_init().
1045
1046 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1047
1048         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1049         call_method]): Delegate the actual work in security-core-clr.c
1050         to ease code sharing.
1051
1052 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1055         float conv.ovf.un opcodes are encountered, instead of asserting later.
1056         Fixes #566296.
1057
1058 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1061
1062         * iltests.il.in: Add a test.
1063
1064 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1067         large. Fixes #567040.
1068
1069         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1070
1071 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1074         #592711.
1075
1076 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1077
1078         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1079         mono_create_handler_block_trampoline with the proper #ifdef so that it
1080         compiles on amd64.
1081
1082 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1085         allows to select if it's new or old context that is passed to 
1086         the callback.
1087
1088         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1089         case when executing a guarded handler from the EH machinery.
1090
1091         * mini-exceptions.c (mono_install_handler_block_guard): New function
1092         responsible for checking for handler blocks, installing the guard and
1093         clearing abort state.
1094
1095         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1096         to check for handler blocks and skip interruption logic if one was found.
1097
1098         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1099         by the handler block guard trampoline. Resumes interruption by raising the
1100         pending ThreadAbortException.
1101
1102         * mini.c (create_jit_info): Calculate the end address of a finally block.
1103
1104         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1105         of a finally block to a specified address and return the old one.
1106
1107         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1108         trampoline patches the original return address and calls the trampoline function.
1109
1110 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1113
1114         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1115         does the patching if the callee is in the same domain.
1116
1117         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1118         of mono_arch_patch_plt_entry ().
1119
1120 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1121
1122         * mini.c (create_jit_info): Fix try block hole length encoding.
1123
1124 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1125
1126         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1127         duplicate information and print offsets instead of absolute addresses.
1128
1129 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1132         event is sent. Fixes #591733.
1133
1134 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1137         OpenBSD.
1138
1139 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1140
1141         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1142         thread_to_tls hash table.
1143
1144         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1145         section. Fixes #591000.
1146
1147 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1148
1149         * Makefile.am (version.h): Check for pure .git directory only,
1150         fixes SVN revision when using git without git-svn.
1151
1152         Contributed under MIT/X11 license.
1153
1154 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1157
1158 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1159
1160         * basic-simd.cs: Test for vector x scalar binary operators.
1161
1162 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1163
1164         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1165         intrinsics with expanded scalar arguments.
1166
1167 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1168
1169         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1170         don't have an exception class, so don't decode it. This would crash
1171         with filter clauses.
1172
1173 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1174
1175         Make sure that trunk builds with DISABLE_JIT, an update to the
1176         PlayStation 3 port.
1177         
1178         * mini.c (mini_get_shared_method): this code seems to be necessary
1179         regardless of whether DISABLE_JIT has been defined.
1180
1181         (mono_jit_compile_method_inner): it seems that this method is
1182         required even in full AOT mode, so ifdef out only the pieces that
1183         try to genrate code (the body of code that applies patches to the
1184         code).  
1185
1186         (mini_method_compile): do not compile when using DISABLE_JIT.
1187
1188         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1189         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1190         compile when DISABLE_JIT is set.
1191
1192 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1193
1194         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1195         arch really supports it.
1196
1197 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1198
1199         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1200
1201 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1202
1203         * exceptions-s390x.c: Add support for
1204         mono_arch_get_throw_corlib_exception and fix throw by name.
1205
1206         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1207         logic (especially for varargs); Correct localloc sizing; Add
1208         mono_arch_get_this_arg_from_call and
1209         mono_arch_get_this_arg_from_call.
1210
1211         * mini-s390x.h: Add support for facility list extraction;
1212         Correct/update MONO_ARCH_xxx settings.
1213
1214         * mini-s390.c: Minor corrections to instruction output for
1215         varargs. No IMT implementation - I think it's time to deprecate
1216         s390 and just leave s390x.
1217
1218         * tramp-s390x.c: Correct creation of trampoline instruction
1219
1220
1221         * cpu-s390x.md: Update some instruction lengths
1222
1223 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1226         can be hit with partial sharing.
1227
1228         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1229         in non-shared classes correctly.
1230         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1231         Turn on partial sharing.
1232
1233 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1236         by mistake.
1237
1238 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1241         mono_method_signature ().
1242
1243         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1244
1245         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1246         error checking, so later calls do not need error checking.
1247
1248 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1251
1252         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1253
1254 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1255
1256         * mini-exceptions.c (mono_handle_exception_internal): Don't
1257         check try_end for archs different than s390. 
1258
1259         * mini.c (create_jit_info): Don't crash if the finallt block is the
1260         last one.
1261
1262 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1263
1264         * driver.c (mono_main): Don't free global codeman under linux since
1265         glic now peeks at code on stack for more archs than just amd64.
1266
1267 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1268
1269         * mini.c, method-to-ir.c: changes to support compressed interface
1270         bitmaps.
1271
1272 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1275         Use sigaction on OpenBSD too.
1276
1277 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1280
1281 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1282
1283         * debugger-agent.c: #include sys/select.h for fd_set.
1284
1285         Code is contributed under MIT/X11 license.
1286
1287 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1290         (openbsd+amd64 ?).
1291
1292 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1295         some large methods with lots of exception handlers. Fixes #440924.
1296
1297 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1298
1299         * method-to-ir.c: remove code duplication for interface checks.
1300
1301 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1304         (assembly_unload): Clear all event requests referencing the to-be unloaded
1305         assembly.
1306
1307
1308 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1309
1310         * mini.h, mini-exceptions.c: restore the state of the stack
1311         guard page permissions.
1312
1313 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1316         call site patching code, it doesn't appear to be needed.
1317
1318 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1319
1320         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1321         sharing generic methods whose type arguments are a mix of reference and
1322         non-reference types. Not yet turned on.
1323
1324         * mini.c (mini_get_shared_method): New helper function to return
1325         the method which will be compiled/registered in the JIT tables when doing
1326         generic sharing.
1327         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1328         use mini_get_shared_method ().
1329
1330         * mini.c (mini_method_compile): Register the same method which is compiled when
1331         doing generic sharing.
1332
1333         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1334
1335         * generics.cs: Add partial sharing tests.
1336
1337 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1338
1339         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1340                    Add an enum value that or's all possable values together. Add an enum value
1341                    that marks the end of the used bit indexes.
1342
1343         * mini-amd64.c : Make changes to match the changes in mini.h 
1344
1345         * mini-x86.c : Make changes to match the changes in mini.h
1346
1347         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1348                    simd_version to support more simd versions. Changed the name of
1349                    simd_version to simd_version_flags to make it more intuitive that
1350                    it now contains bit flags. Reordered the *_intrinsics arrays to
1351                    match the changes above. Changed emit_intrinsics() to use the new
1352                    setup mentioned above.
1353
1354         Code is contributed under MIT/X11 license.
1355
1356 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1359         remaining archs. Alpha and hppa maintainers, please stand up.
1360
1361 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1362
1363         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1364         is needed even when fail_tramp!=NULL.
1365
1366 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * debugger-agent.c (insert_breakpoint): Write a log message.
1369
1370 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * iltests.il.in: Add a few tests for LEAVE going over multiple
1373         finally clauses.
1374
1375 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1378
1379 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * mini.h (MonoBasicBlock): Add native_length field.
1382         * mini.h (MonoCompile): Add try_block_holes field.
1383         * mini.h (MonoInst): Add exception_clause pointer to
1384         the data union.
1385
1386         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1387         * mini.c (mono_cfg_add_try_hole): New function to register possible
1388         holes in try blocks.
1389         * mini.c (create_jit_info): Fill in the holes information.
1390
1391         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1392         by a try block.
1393
1394         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1395
1396 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1397
1398         * jit-icalls.c: adjusted for the array API changes.
1399
1400 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1403
1404 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1405
1406         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1407         the 'pending' flag. This fixes support for appdomains too.
1408
1409
1410 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1411
1412         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1413
1414 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1417         when using LLVM, LLVM generates it itself when needed.
1418
1419         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1420
1421         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1422         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1423         OP_ANDNPS/OP_ANDNPD.
1424
1425 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1428         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1429         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1430
1431 2010-03-11  Martin Baulig  <martin@ximian.com>
1432
1433         * debugger-agent.c (type_commands): Add NULL check to
1434         `CMD_TYPE_GET_SOURCE_FILES'.
1435
1436 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1439
1440 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1443         #586664.
1444
1445         * iltests.il.in: Add a test.
1446
1447 2010-03-05  Martin Baulig  <martin@ximian.com>
1448
1449         Add support for aborting invocations.
1450
1451         * debugger-agent.c
1452         (InvokeData): Added `InvokeData *last_invoke'.
1453         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1454         added a new `invoke' field to keep the `InvokeData *' throughout
1455         the invocation.
1456         (ErrorCode): Added `ERR_NO_INVOCATION'.
1457         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1458         (mono_debugger_agent_handle_exception): Don't report any exception
1459         if an abort was requested.
1460         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1461         a thread abort if necessary.
1462         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1463
1464 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1465
1466         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1467         so we can release the whole list and not just the first one. Free
1468         it in more places as well.
1469
1470 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1473
1474 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1475
1476         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1477
1478 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1479
1480         * driver.c: report also other misc build options.
1481
1482 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1483
1484         * method-to-ir.c: Generate better code for the NewObject
1485         intrinsic.
1486         
1487 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1490         is disabled. Fixes #582322.
1491
1492         * iltests.il.in: Add a test.
1493
1494 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1497         the handling of obj->synchronization == null and owner != current thread to
1498         mono_monitor_exit ().
1499
1500         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1501
1502
1503 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1504
1505         * mini.c: change the way emulated opcode info is stored and save about
1506         4 KB of runtime memory.
1507
1508 2010-03-04  David S. Miller  <davem@davemloft.net>
1509
1510        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1511        that don't provide the siginfo in the second signal handler argument
1512        are buggy, and this has been fixed for years.
1513        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1514        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1515
1516 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * aot-runtime.c (find_symbol): Fix a leak.
1519         (decode_patch): Ditto.
1520
1521 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1522
1523         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1524
1525 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1528
1529 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1530
1531         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1532
1533 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1536         to check for errors, it's enough to create the metadata open.
1537
1538         Fixes #562150
1539
1540 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1541
1542         * trace.c|h:
1543         * mini-exceptions.c: Add support for printing stack traces when handling
1544         exceptions, and when printing exceptions thrown while tracing also print
1545         the exception message.
1546
1547 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1548
1549         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1550         since the exclude token is a valid string character.
1551
1552 2010-03-02  Levi Bard  <levi@unity3d.com>
1553
1554         * debugger-agent.c: Invalidate thread stacks on domain unload.
1555
1556 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1557
1558         * method-to-ir.c: Emit dummy_use for stored reference after write
1559         barriers to make sure the object is pinned if the GC interrupts
1560         before the write barrier is done.
1561
1562 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1565
1566 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * debugger-agent.c: Add a log message printing the protocol version.
1569
1570 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1571
1572         * debugger-agent.c: Add a new command to communicate the protocol version used
1573         by the client. This could be used to allow newer runtimes to communicate with
1574         older clients.
1575
1576 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1579
1580 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1581
1582         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1583         type.
1584
1585 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1586
1587         * mini-arm.c: make the arm cpu arch configurable with the
1588         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1589         Bug #584198.
1590
1591 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1592
1593         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1594         support for the perf tool on Linux.
1595
1596 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1597
1598         * method-to-ir.c: make string.InsertenalSetChar() specialization
1599         effective.
1600
1601 2010-03-01  Robert Jordan  <robertj@gmx.net>
1602
1603         * Makefile.am: fix the non-static build.
1604
1605 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1608         here.
1609
1610 2010-02-26  Robert Jordan  <robertj@gmx.net>
1611
1612         * tasklets.c (continuation_store): Return from an error condition
1613         immediately.
1614
1615 2010-02-26  Martin Baulig  <martin@ximian.com>
1616
1617         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1618
1619         * debug-mini.c
1620         (MonoDebuggerThreadInfo): Added `internal_flags'.
1621         (MonoDebuggerInternalThreadFlags): New enum.
1622         (_mono_debugger_throw_exception): Don't signal the debugger if a
1623         type abort was requested.
1624         (_mono_debugger_unhandled_exception): Likewise.
1625         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1626         (mono_debugger_runtime_invoke): If the debugger requested a thread
1627         abort during the invocation, reset it here.
1628
1629 2010-02-26  Martin Baulig  <martin@ximian.com>
1630
1631         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1632         instead of `MonoThread *'.
1633
1634 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1637         code offsets table, as it is mostly sorted.
1638
1639 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1640
1641         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1642         Fixes #582991.
1643
1644 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1645
1646         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1647
1648 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1649
1650         * Makefile.am: build the new ABI version of the libmono library.
1651         * debugger-agent.c, mini.c: fix warnings with the new API.
1652         * jit.h: don't depend on glib.h being included.
1653
1654 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1657
1658 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1661         ThreadStatic variables.
1662
1663 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1666         data is not freed yet. Fixes #582460.
1667
1668 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1671         event requests. Bump protocol minor version.
1672
1673 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1676
1677 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1680         #581950.
1681
1682         * iltests.il.in: Add a test.
1683
1684 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1685
1686         * mini.c (inline_method): Check for loader errors.
1687
1688 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1689
1690         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1691         instead of mono_method_get_header as it doesn't decode locals
1692         so the called method can have unresolved dependencies that will only
1693         be satisfied after the current method is JIT'd.
1694
1695         Fixes #550968.
1696
1697 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1698
1699         * basic.cs (test_0_div_opt): Speed this up a bit.
1700
1701 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1704
1705         * mini.c (mono_jit_create_remoting_trampoline): Call
1706         mono_create_specific_trampoline () instead of
1707         mono_arch_create_specific_trampoline ().
1708
1709         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1710
1711 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1712
1713         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1714         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1715
1716         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1717
1718         * mini-amd64.c: Fix DISABLE_JIT support.
1719
1720 2010-02-20  Geoff Norton  <gnorton@novell.com>
1721
1722         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1723
1724 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1727         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1728         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1729         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1730         handle_exception.
1731
1732 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1735         edx/ecx too. This is needed to support OP_SEQ_POINT.
1736
1737 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1740
1741         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1742
1743 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1746         LLVM+AOT+exceptions, not enabled yet.
1747
1748 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1751
1752 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1755         xdebug info for these.
1756
1757         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1758         in a few places.
1759
1760         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1761         not used yet.
1762
1763 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1766
1767 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1770         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1771
1772         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1773         for mtouch.
1774
1775 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1776
1777         * debugger-agent.c: handle incomplete reads and EINTR in
1778         recv()/send(). This could have been causing random
1779         disconnections.
1780
1781 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1784         points.
1785
1786         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1787         so they have small offsets. Fixes #566311.
1788
1789 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1790
1791         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1792
1793 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * mini-amd64.c: Remove the special casing of byref in a few places now that
1796         mini_type_get_underlying_type () handles it.
1797
1798         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1799         by returning native int. Fixes #577984.
1800
1801 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1804         a macro.
1805
1806         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1807         of putting the clause itself.
1808
1809         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1810
1811 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1814         might be unaligned.
1815
1816 2010-02-10  Geoff Norton  <gnorton@novell.com>
1817
1818         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1819
1820 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1823         llvm methods too.
1824
1825         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1826         it is not an LLVM generated symbol.
1827
1828         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1829
1830         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1831         implementation in gshared mode because it causes regressions.
1832
1833         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1834
1835         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1836         should be done by the caller.
1837
1838         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1839
1840         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1841
1842         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1843         since mono_jit_info_table_find () doesn't do it anymore.
1844
1845         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1846         instead of mono_jit_info_table_find ().
1847
1848 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1849
1850         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1851
1852         * aot-compiler.c (encode_method_ref): Update after the removal of
1853         mono_gc_get_managed_allocator_type ().
1854
1855         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1856         Fixes #564538.
1857
1858 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1861         generic params as well.
1862         (handle_isinst): Ditto.
1863
1864         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1865         instead of always calling an icall.
1866
1867         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1868         computing the size of the got.
1869
1870         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1871         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1872         the assembly directive '.set' so it points to the first LLVM emitted method.
1873
1874 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * mini.c (mini_method_verify): Report the method which failed to verify.
1877
1878 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1879
1880         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1881         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1882         runtime MS verifier.
1883
1884 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1887         #561962.
1888
1889 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1890
1891         * mini-llvm.c: Init the jit module only when first JITting.
1892
1893         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1894
1895         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1896
1897         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1898         replaced with the real got.
1899
1900         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1901
1902         * image-writer.c: Reduce the amount of #ifdefs a bit.
1903
1904         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1905         llvm on darwin/arm.
1906
1907         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1908
1909         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1910         global.
1911
1912 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1913
1914         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1915         (mono_llvm_emit_method): Fix unaligned stores too.
1916
1917         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1918         so async stack walks don't crash.
1919
1920 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1923         was not patched if the callee needed an rgctx trampoline.
1924
1925 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1928         vtable address in AOT code.
1929
1930 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1933         MonoInst's.
1934
1935 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1936
1937         * genmdesc.pl: remove dependency on external cpp.
1938
1939 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1942         using LLVM, its not needed, and abcrem can't handle it.
1943
1944 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1945
1946         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1947         it easier to group instructions and reduce duplication.
1948
1949 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * decompose.c: Move the array/soft float decompose routines here from
1952         method-to-ir.c.
1953
1954         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1955
1956 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1959         to tell LLVM that the got is constant, not used yet.
1960
1961         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1962
1963 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1964
1965         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1966         managed wrappers.
1967
1968 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * aot-compiler.c (add_wrappers): Commit the hack which generates
1971         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1972         custom attribute.
1973
1974 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1977         a fault, only used by the LLVM backend.
1978
1979         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1980         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1981
1982         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1983         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1984
1985         * mini-llvm.c: Only generate volatile loads from load instructions which have
1986         the MONO_INST_FAULT flag set.
1987
1988 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1991         64 bit platforms.
1992
1993 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1996         sequence points. Fixes #571236.
1997
1998 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
2001         end of the appdomain unload process, after assemblies have been unloaded.
2002         Fixes #574842.
2003
2004 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
2007         works.
2008
2009         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
2010         Fixes #573988.
2011
2012 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
2015
2016 2010-01-26  Geoff Norton  <gnorton@novell.com>
2017
2018         * aot-compiler.c: Fix a logic error introduced when guarding against enums
2019         with struct marshalability.
2020
2021 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
2024         it supports class names as well.
2025
2026         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
2027         needed by the GC map code.
2028
2029         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2030         flags if needed.
2031
2032         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2033         if cfg->init_ref_vars is set.
2034
2035         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2036         cfg->disable_initlocals_op_refs is set.
2037
2038         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2039         using liveness info if cfg->compute_precise_live_ranges is set.
2040
2041         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2042         volatile variables correctly. Add comments about the live ranges. Not enabled
2043         yet.
2044
2045 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2046
2047         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2048         0x2a into them in method prologs.
2049
2050         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2051
2052 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2055         classes, since llvm is compiled with -fno-rtti.
2056
2057         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2058
2059         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2060         llvm does not require it.
2061
2062         * aot-runtime.c (load_method): Print the full name of the last aot method.
2063
2064 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2067         thread has not fully started yet.
2068
2069 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2072
2073 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2074
2075         * driver.c: Do not abort if LLVM is not supported, print a
2076         warning and add the information to the Mono JIT information.
2077
2078 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2081         using explicit null checks.
2082
2083 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2086         related code.
2087
2088         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2089         () in one place.
2090         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2091         its no longer needed.
2092
2093         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2094
2095         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2096         define for platforms still using it (s390). Get rid of the
2097         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2098
2099         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2100         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2101
2102         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2103         the caller pushed the arguments.
2104
2105         * mini-llvm.c: Enable throwing exceptions on x86.
2106
2107         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2108         "Thread (nil) may have been prematurely finalized" messages if this is called
2109         on a thread not registered with the runtime.
2110
2111         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2112
2113 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * jit-icalls.c (mono_array_new_3): New jit icall.
2116
2117         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2118
2119         * arrays.cs: Add a test for 3 dimensional arrays.
2120
2121 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2124         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2125         used.
2126
2127         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2128         thrown on x86.
2129
2130         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2131
2132         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2133
2134         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2135
2136 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2137
2138         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2139           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2140
2141         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2142
2143         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2144
2145         Code is contributed under MIT/X11 license.
2146
2147 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2150
2151         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2152
2153         * mini.c (mini_method_compile): Set the new flag when running under the
2154         debugger.
2155
2156 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2159         a ref/noref value + a global pin flag, so parts of stack frames can still be
2160         precisely marked even if they include stuff which needs pinning. Improve logging.
2161         Fix many bugs. Not enabled yet.
2162
2163         * gc-test.cs: Add a few tests.
2164
2165         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2166         the normal -v options. Avoid propagating liveness information through bblocks
2167         which end with a NOT_REACHED opcode.
2168
2169         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2170         after cfg has been freed.
2171
2172 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2175         if a clause is skipped because it uses the exception object, since it could
2176         have caught the exception.
2177
2178         * exceptions.cs: Add a test.
2179
2180 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2181
2182        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2183
2184         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2185         ICollection<T> wrappers.
2186
2187 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2190
2191 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2192
2193         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2194         NOMAP32BIT or optimize_for_xen is set.
2195
2196 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2197
2198         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2199         mono_metadata_str_hash () instead.
2200
2201 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2202
2203         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2204         sizeof (void*).
2205
2206         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2207
2208 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2211         flag is set.
2212
2213         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2214         throwing code correctly.
2215
2216         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2217
2218 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2221         ftnptrs created by us, handle RGCTX_FETCH correctly.
2222         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2223
2224         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2225         ftnptr added by mono_aot_get_named_code ().
2226
2227 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * mini-arm.c: Fix a few LLVM problems.
2230
2231         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2232
2233 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2234
2235         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2236         AOT compiling.
2237
2238 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2239
2240         * jit.h, method-to-ir.c: added ability to set the policy for
2241         inserting breakpoints from the break IL instruction or the
2242         Debugger.Break () API call.
2243
2244 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2247         assemblies need to be eagerly loaded.
2248
2249 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2252
2253 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2256         an argument which matches any exception.
2257
2258 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2261         optimization if the called method is gshared and marshalbyref, since gshared
2262         methods can' have wrappers. Fixes #569390.
2263
2264         * generics.cs: Add a test.
2265
2266 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2267
2268         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2269         callable from gdb.
2270
2271 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2274
2275 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2278         since it is not supported in win2000.
2279
2280 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2283         error if loading an assembly fails.
2284         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2285
2286         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2287         if exists.
2288
2289         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2290         compiled methods.
2291
2292         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2293
2294         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2295         is not supported yet.
2296
2297         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2298
2299 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2300
2301         * method-to-ir.c: All types with variant arguments must fallback to the
2302         slow path. This makes cast of variant delegates work.
2303
2304         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2305         argument that is set to TRUE is the returned vtable slot is for a variant
2306         interface. Changed a g_print + g_assert_not_reached to a g_error.
2307
2308         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2309         a similar fashion of generic virtual methods.
2310
2311 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2314         when cfg is null.
2315
2316         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2317         method using a variance aware function.
2318
2319         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2320
2321 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2322
2323         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2324         do an icall for now.
2325
2326 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2329         If LLVM decides to set the code model to Large, reset it to Default.
2330
2331 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2334         stripped binaries as well.
2335
2336 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2339         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2340
2341         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2342         reg.
2343
2344 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2347         separate function.
2348
2349         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2350         as the type info to llvm.eh.selector.
2351         (exception_cb): Use the type info for filling out some fields of
2352         MonoJitExceptionInfo like the flags and the exception class. This is needed
2353         because the LLVM produced exception handling clauses might not match the original
2354         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2355
2356         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2357         separate function. Add an extra argument which returns the type infos
2358         corresponding to the exception clauses.
2359
2360         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2361         exception handling clauses.
2362
2363 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2366         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2367         to fix an AOT case.
2368
2369 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2370
2371         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2372         internal assembly.
2373
2374 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2377         llvm code.
2378
2379 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2380
2381         * mini.c (mini_method_compile): Verify the method before calling
2382         mono_compile_create_vars as this might crash since it uses method
2383         information.
2384
2385         Fixes #560196.
2386
2387 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2390         one case if AOTing, since the class might not be a concrete class.
2391
2392 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2395         functions which are now defined in mempool-internals.h.
2396
2397         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2398
2399         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2400
2401 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2402
2403         * mini.c:
2404         * method-to.ir.c:
2405         * mini-*.c: Properly handle generic enums.
2406
2407         Fixes #566294
2408
2409 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2412         in a few more places.
2413
2414 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2417         nullable parameters. Fixes #567351.
2418
2419 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2422
2423 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2424
2425         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2426         mono_get_generic_context_from_code () call.
2427
2428         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2429
2430 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2433         needed.
2434
2435 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2436
2437         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2438         mono_method_get_signature returns NULL. Fix #567084
2439
2440 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2443         instead of once for each module.
2444
2445 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * debugger-agent.c (ss_start): Implement step over for the last sequence
2448         point in methods.
2449
2450         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2451         have the STEP_LOC flag set.
2452
2453         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2454         fails. Fixes #566689.
2455
2456 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * mini.c (mono_add_seq_point): New helper function.
2459         (mono_save_seq_point_info): New function to save sequence point info, extracted
2460         from mini_method_compile ().
2461
2462         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2463
2464         * mini.h (MonoSeqPointInfo): New structure containing information about
2465         the sequence points of a JITted method.
2466         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2467         'bucket' field.
2468
2469         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2470         point information is stored, use a MonoSeqPointInfo structure instead of a
2471         GPtrArray. For each seq point, compute a list of successor seq points.
2472
2473         * debugger-agent.c: Use the successor list to implement step-over more
2474         efficiently: instead of single stepping until a different line/IL offset is
2475         reached, place breakpoints into all successor seq points.
2476
2477         * mini.h: Bump AOT file format version.
2478
2479 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2480
2481         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2482
2483         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2484
2485 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2488         build.
2489
2490 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2493         alloca as g_malloc is not signal safe.
2494
2495 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2496
2497         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2498         VALGRIND_DISCARD_TRANSLATIONS.
2499
2500         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2501         checks, they are no longer needed.
2502
2503         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2504         a function into a sigctx which can handle function pointers.
2505
2506         * mini-ppc.c: Implement soft debugger support on ppc64.
2507
2508         * mini-ppc.c: Implement soft debugger support.
2509
2510 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2513
2514 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2515
2516         * mini.c (mono_get_runtime_build_info): include Mono version in
2517         the returned value.
2518
2519         * driver.c (mono_main): VERSION is now included in the string
2520         returned from mono_get_runtime_build_info()
2521
2522 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2525         signatures. Fixes #565143.
2526
2527         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2528
2529 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2532
2533 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2534
2535         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2536         making max stack 10x smaller.
2537
2538 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2541
2542 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2543
2544         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2545
2546 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2549         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2550
2551         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2552
2553         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2554
2555         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2556
2557         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2558         the compilation.
2559
2560 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2561
2562         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2563         raise an invalid program exception.   
2564
2565         For other opcodes that we might not handle use a g_warning and
2566         raise the exception.   Beats termination.
2567
2568         Fixes #561724
2569
2570 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2573
2574         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2575         by merging the LLVM and !MAP_32BIT cases.
2576
2577 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2578
2579         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2580         sigctx being passed in, as we have no CONTEXT available in the APC.
2581
2582         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2583         for now.
2584
2585         Code contributed under MIT/X11 license.
2586
2587 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2590         in the LLVM backend on AMD64.
2591
2592         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2593         FDE.
2594
2595         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2596
2597         * mini-llvm.c: Export mono_personality for AOT.
2598
2599         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2600
2601         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2602         implicit exception can occur.
2603
2604         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2605         OP_IMPLICIT_EXCEPTION instruction.
2606
2607         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2608
2609         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2610
2611         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2612         inside a protected block.
2613
2614         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2615         trampolines doesn't include the argument.
2616
2617         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2618         trampolines on amd64.
2619
2620         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2621         of RDI.
2622
2623         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2624         disabled for methods with clauses.
2625
2626         * mini-llvm.c: Enable support for catch clauses.
2627
2628         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2629         end of an LLVM compiled finally clause.
2630         (mono_handle_exception_internal): Save the exception handling state in TLS
2631         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2632         resume unwinding from that point.
2633
2634         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2635         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2636         to obtain the addresses of the exception handling regions.
2637
2638         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2639         finally clauses are supported.
2640
2641         * mini.c (mini_method_compile): Add support for LLVM code with exception
2642         handlers.
2643
2644 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2647         proper size.
2648
2649 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2652         as a primitive type.
2653
2654 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2655
2656         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2657         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2658         #564000.
2659
2660 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2661
2662         * method-to-ir.c (mini_redirect_call): do not redirect the
2663         InternalAllocateStr internal call if string profiling is enabled.
2664
2665 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2668         generic methods.
2669
2670         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2671         unwind.h header file.
2672
2673         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2674         newer valgrind versions seems to handle this fine.
2675
2676 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2679         on the debugger thread.
2680
2681 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2684
2685         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2686
2687         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2688
2689         * cpu-<ARCH>.md: Make call_handler clob:c.
2690
2691         * mini.c: Reenable SSA for methods with clauses.
2692
2693         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2694         as it causes failures on x86.
2695
2696 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2697
2698         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2699         returns NULL (e.g. a bad assembly).
2700
2701 2009-12-08  Geoff Norton  <gnorton@novell.com>
2702
2703         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2704         stepping out into native code.  There were issues with nested invokes
2705         like .cctors.
2706
2707 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * mini.c (mini_method_compile): Do the disable_llvm checks early
2710         and avoid the LLVM compile pass if the checks fail.
2711
2712         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2713
2714         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2715         LLVM optimizations don't try to remove them.
2716
2717         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2718         different file so the original remains.
2719
2720 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2723
2724         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2725
2726         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2727         support for non-inline unwind descriptors.
2728
2729 2009-12-07  Geoff Norton  <gnorton@novell.com>
2730
2731         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2732         the interrupt_count slightly differently.  Native threads were never
2733         marked as resumed.
2734
2735 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2738         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2739         yet generate this info.
2740
2741         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2742
2743         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2744         client can distinguish between intptrs and longs.
2745
2746 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2747
2748         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2749         blob.
2750
2751         * aot-runtime.c (load_function): Update after the change above.
2752
2753         * mini.h: Bump AOT file format version.
2754
2755         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2756         if the delegate class is dynamic.
2757
2758         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2759         in gshared code too using the new rgctx info type
2760         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2761
2762 2009-12-04  Geoff Norton  <gnorton@novell.com>
2763
2764         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2765         we need to track the original suspend count so the thread properly
2766         wakes up in resume_thread.
2767
2768 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2769
2770         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2771         code.
2772
2773         * generics.cs: Add a test.
2774
2775         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2776         is 0. Simplify a lot of code using this.
2777
2778         * mini-trampolines.c (mono_delegate_trampoline): Call
2779         mono_create_static_rgctx_trampoline () before saving the final address in
2780         delegate->method_code, to avoid calling it each time a delegate is first called.
2781
2782         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2783         which need static rgctx trampolines.
2784
2785         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2786         keyed on the method+addr pair, since addr could be either the method addr or
2787         an unbox trampoline in the AOT case. Fixes #560246.
2788
2789 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2792         place it was called before too.
2793
2794 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2795
2796         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2797         if no security manager is present, to speed up the AOT case. Call
2798         mono_class_vtable () full with raise_on_error == TRUE instead.
2799
2800 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2801
2802         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2803         the local optimization passes can take its result into account. Fixes
2804         #559876.
2805
2806         * exceptions.cs: Add a test.
2807
2808 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2809
2810         This patch is contributed under the terms of the MIT/X11 license
2811
2812         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2813
2814 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2815
2816         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2817
2818         * debugger-agent.c: Rework the handling of stack traces of running threads to
2819         avoid crashes if compute_frames () tries to walk the stack of running thread.
2820
2821         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2822
2823         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2824
2825         * mini.h (StackFrameInfo): Add an 'lmf' field.
2826
2827 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * debugger-agent.c (suspend_current): Always set really_suspended.
2830
2831         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2832
2833         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2834
2835 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2838         really suspended.
2839
2840 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2843
2844 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2845
2846         * mini-trampolines.c: Fix MSVC build.
2847
2848 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2851
2852 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2853
2854         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2855         the instruction following an OP_FCOMPARE is optimized away.
2856
2857 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2860         emit_autoreg () into this arch-specific function.
2861
2862         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2863         code, it is no longer needed.
2864
2865         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2866
2867         * mini.h: Bump AOT file format version.
2868
2869         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2870         using the sorted_code_offsets array, instead of reading it from the
2871         exception debug info.
2872         (load_method): Call mono_aot_find_jit_info instead of
2873         decode_exception_debug_info ().
2874
2875         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2876         LLVM compiled as a flag.
2877
2878 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * debugger-agent.c (resume_thread): Fix a warning.
2881
2882         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2883         generated.
2884
2885 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2888         contents to MonoAotFileInfo.
2889
2890 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2891
2892         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2893         Put all binary data into a giant blob, similarly to the way .net assemblies
2894         store binary data. Emit offset tables in a compact form to reduce their size.
2895
2896         * mini.h: Bump AOT file format version.
2897
2898         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2899         places.
2900
2901         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2902         avoid linear searches at runtime.
2903
2904         * aot-runtime.c (find_symbol): Update this to use the hash.
2905
2906         * mini.h: Bump AOT file format version.
2907
2908 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2909
2910         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2911         container.
2912
2913         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2914         too.
2915
2916         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2917         the distribution of got slot types.
2918
2919         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2920
2921         * method-to-ir.c: Add support for generating explicit null checks.
2922
2923 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2926         on a random thread if possible.
2927
2928         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2929         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2930         correctly.
2931
2932         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2933         regs. Pass the real size of the regs array to mono_unwind_frame ().
2934
2935         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2936         ones instead.
2937
2938 2009-11-24  Geoff Norton  <gnorton@novell.com>
2939
2940         * mini-darwin.c: Work around apple bug rdar://7209349  See
2941         http://openradar.appspot.com/7209349 for details.  Synopsis,
2942         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2943         never been initialized before.
2944
2945 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2948
2949         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2950
2951 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2954         OP_SHL_IMM is not 32 bit.
2955
2956 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2959
2960 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2963         encountered.
2964
2965         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2966         > 0 since some threads can resume if their resume_count is > 0.
2967         (invoke_method): Avoid reading freed memory.
2968
2969         * debugger-agent.c (process_suspend): Extract the suspend code from
2970         process_single_step_inner () to a separate function. Rework the code to prevent
2971         races between this function and thread interrupts.
2972
2973         * debugger-agent.c (suspend_current): Check the resume_count field instead
2974         of resume_one so suspends+resumes during single threaded invokes work
2975         correctly.
2976
2977 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2980         to make the generated code smaller.
2981
2982         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2983         sequence generated by recent LLVM versions.
2984
2985         * mini-llvm.c: Add support for a few simple cases which weren't supported
2986         before.
2987
2988         * mini-trampolines.c (mono_magic_trampoline): Don't call
2989         mono_arch_get_vcall_slot () when llvm is enabled.
2990
2991         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2992
2993         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2994         into a new function called common_call_trampoline () which is used by the
2995         llvm vcall trampoline as well.
2996
2997         * debugger-agent.c: Implement single threaded invokes.
2998
2999         * debugger-agent.c: Revert change which broke the agent on linux.
3000
3001         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
3002         #557606.
3003
3004         * generics.cs: Add a test.
3005
3006 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * debugger-agent.c: Fix the cygwin build.
3009
3010 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * cprop.c: Remove this unused file.
3013
3014 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
3017         #557262.
3018
3019         * basic.cs: Add a test.
3020
3021 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
3024         in one more place.
3025
3026 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3029         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3030         it. Use this flag to control llvm related code paths instead of #ifdef
3031         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3032         AOT code.
3033
3034         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3035
3036         * mini.h: Bump AOT file format version.
3037
3038         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3039         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3040
3041         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3042         was used as an assembly filter.
3043
3044 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * unwind.c: Fix support for ppc.
3047
3048         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3049         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3050
3051 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3054         port.
3055         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3056         added by the ps3 changes.
3057
3058 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-gc.c: Resurrect this, so at least it compiles.
3061
3062         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3063
3064 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3065
3066         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3067         create_event_list () so assembly filters can be used.
3068
3069         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3070         from the LMF.
3071
3072 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3075         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3076         is disabled.
3077
3078         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3079         classes for char/bool too.
3080
3081         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3082
3083         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3084         used.
3085
3086         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3087         Fix warnings.
3088
3089 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3090
3091         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3092         
3093         Code contributed under MIT/X11 license.
3094
3095 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3096
3097         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3098         threads in native code work.
3099
3100         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3101         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3102         version.
3103
3104 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3105
3106         * debugger-agent.c: Implementation for Windows platform.
3107
3108         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3109         primitives. Use SEH to implement breakpoints and single stepping.
3110
3111         * mini-x86.h: Enable soft debugger on Windows.
3112
3113         Code contributed under MIT/X11 license.
3114
3115 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3118         under XEN. Fixes #522894.
3119
3120         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3121
3122         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3123         interface calls in LLVM AOT code.
3124
3125         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3126         is found.
3127
3128         * mini-llvm.c: Add support for OP_VPHI.
3129
3130         * objects.cs: Add a test.
3131
3132 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3135         this is called on the debugger thread.
3136
3137 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * mini-llvm.c: Add soft-float support.
3140
3141         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3142         FCALL which returns an R4.
3143
3144         * driver.c (mono_main): Add a missing '\n'.
3145
3146         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3147         platforms which doesn't support the LLVM IMT trampoline.
3148
3149 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3150
3151         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3152
3153         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3154
3155         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3156         virtual calls.
3157
3158         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3159
3160 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3163         Instead of emitting a method_order table, sort the contents of the code_offsets
3164         table and do a binary search in the sorted table. The previous approach doesn't
3165         work with LLVM which emits methods in a arbitrary order.
3166
3167         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3168         in the .eh_frame section in ELF files.
3169
3170         * mini.h: Bump corlib file format version.
3171
3172         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3173
3174         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3175         LDMIA->LDM macro name change.
3176
3177 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3178
3179         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3180         x86.
3181
3182         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3183         SVN.
3184
3185         * aot-compiler.c: Ditto.
3186
3187         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3188         &align to mini_type_stack_size_full ().
3189
3190         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3191
3192         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3193
3194 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3195
3196         * mini-arm.c: Compute the stack space used by arguments using
3197         mini_type_stack_size_full ().
3198
3199 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3200
3201         * optflags-def.h: Remove dead TREEPROP optimization.
3202
3203 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3204
3205         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3206
3207         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3208
3209 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3210
3211         * driver.c (mono_jit_parse_options): New public API function to parse options
3212         as done by the runtime executable.
3213
3214         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3215         when handling named arguments.
3216
3217 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3220         for passing small vtypes in registers, make the CallInfo structures more
3221         similar to the code on the other platforms.
3222
3223         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3224         the code in the prolog requires it.
3225
3226 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3227
3228         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3229         (koush@koushikdutta.com).
3230
3231         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3232         where the thunk memory should be allocated from. Fixes appdomain unloading
3233         on arm.
3234
3235 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3238         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3239
3240 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3241
3242         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3243         AOT, as it is not implemented yet.
3244
3245         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3246
3247 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3248
3249         * debugger-agent.c: Fix windows build.
3250
3251 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3252
3253         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3254         after the client connects/disconnects.
3255
3256         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3257         when an exception of a given type is thrown.
3258
3259         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3260         only on an uncaught exception.
3261
3262         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3263
3264         * debugger-agent.c: Add a 'launch' option.
3265
3266 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * debugger-agent.c: Add a 'timeout' option.
3269
3270 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3273         the JDWP agent.
3274
3275 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * debugger-agent.c (set_breakpoint): Emit a log message.
3278
3279 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * mini-arm.c: Fix the arm build.
3282
3283 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3284
3285         * aot-compiler.c: don't leak the value returned from
3286         mono_type_full_name().
3287
3288 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3289
3290         * debugger-agent.c: defer including mono-mutex.h until we know the
3291         agent is supported.
3292
3293 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3294
3295         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3296         of pthreads directly.
3297
3298         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3299         exception handlers. Pass info argument.
3300
3301         * mini.h: Adjust signatures of soft debugger functions to pass void*
3302         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3303
3304         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3305         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3306         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3307         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3308
3309         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3310
3311         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3312         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3313         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3314         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3315
3316         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3317
3318         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3319
3320         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3321
3322         * mono-semaphore.h: Skeleton implementation for Windows.
3323
3324         Code contributed under MIT/X11 license.
3325
3326 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3327
3328         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3329
3330         Code contributed under MIT/X11 license.
3331
3332 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3333
3334         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3335
3336         Code contributed under MIT/X11 license.
3337
3338 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3341         debug info to 100 because 10 still slows down gdb too much.
3342
3343         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3344         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3345         them in the wrappers.
3346
3347 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3350
3351         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3352
3353         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3354         function mono_aot_get_array_helper_from_wrapper ().
3355
3356         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3357         array helper methods.
3358
3359 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3360
3361         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3362         the value was loaded from memory.
3363
3364         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3365         the value was loader from there.
3366
3367         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3368         without constant swizzle.
3369
3370 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3371
3372         * mini-amd64.c: Put soft debugger functions behind a
3373         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3374
3375         * mini-amd64.h: disable the soft debugger in windows.
3376
3377         Code contributed under MIT/X11 license.
3378
3379 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3380
3381         * mini-x86.c: Put soft debugger functions behind a
3382         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3383
3384         Code contributed under MIT/X11 license.
3385
3386 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3387
3388         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3389         to mono_arch_find_jit_info_ext.
3390
3391         Code contributed under MIT/X11 license.
3392
3393 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3396
3397         * debugger-agent.c: Add support for filtering events by assemblies.
3398
3399         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3400         the agent is not enabled.
3401
3402 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3403
3404         * exceptions-x86.c: hopefully last change to fix the windows build.
3405         This one courtesy of Jonathan Chambers.
3406
3407 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3408
3409         * debugger-agent.c: remove unused function.
3410
3411 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3412
3413         * debugger-agent.c: add #ifdefs for a few header files.
3414         * mini-x86.h: disable the soft debugger in windows.
3415         Step 1 of 2 to make this compile on windows with gcc.
3416
3417 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3418
3419         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3420         as it breaks the build.
3421
3422 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3423
3424         Merge the soft debugger branch.
3425
3426         * debugger-agent.h debugger-agent.c: New files containing the soft
3427         mode debugger module.
3428
3429         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3430         at the appropriate locations.
3431
3432         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3433         opcode.
3434
3435         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3436         enable/disable single stepping.
3437
3438         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3439         which returns all information in a StackFrameInfo structure, and can handle the
3440         LMF frames added by the debugger.
3441
3442         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3443         about an LMF frame.
3444
3445         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3446         walker function which works on a specific thread and passes a StackFrameInfo
3447         structure to its callback.
3448
3449         * mini.c (mini_init): Initialize the debugger agent.
3450
3451         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3452
3453         * mini-ops.h: Add OP_SEQ_POINT opcode.
3454
3455         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3456         arguments to the debugger agent.
3457
3458 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3461         speed things up.
3462
3463         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3464
3465         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3466
3467         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3468
3469         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3470         if needed.
3471         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3472         sets the IMT argument and makes a virtual call.
3473
3474         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3475
3476 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3477
3478         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3479         the windows build.
3480
3481 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3482
3483         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3484         runtime. Fixes #551228.
3485
3486 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3489
3490         * basic.cs: Add a test.
3491
3492         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3493         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3494         CONSTRAINED. Fixes #550964.
3495
3496         * generics.cs: Add a test.
3497
3498 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3499
3500         * mini-posix.c (add_signal_handler): Use
3501         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3502
3503 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3504
3505         Contributed under the terms of the MIT/X11 license by
3506         Jerry Maine <crashfourit@gail.com>.
3507
3508         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3509         sse4a for simd intrinsics.
3510
3511         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3512         sse4a for simd intrinsics.
3513
3514 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3517         instead of inst_p1 which is not the same on ILP32 platforms.
3518
3519 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3522         not the mscorlib one before calling mono_get_lmf_addr.
3523
3524         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3525         of the ip to the LMF.
3526
3527         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3528         immediate in the op->op_imm optimization.
3529
3530         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3531         understand. VTypes now work, but are not abi compliant, as they are
3532         split into 4 byte parts instead of 8.
3533         (emit_memcpy): Fix the unrolled case to work on the PS3.
3534
3535         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3536
3537         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3538         the default when static linking.
3539
3540         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3541
3542         * aot-compiler.c: Add an autoreg option to automatically register
3543         statically linked aot modules using ELF .ctors.
3544
3545         * genmdesc.pl: Add __ppc64__ to allowed defines.
3546
3547 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3550         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3551
3552 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3553
3554         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3555
3556 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3557
3558         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3559         which will contain the domain where the method was found.
3560
3561         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3562         mini_jit_info_table_find ().
3563
3564         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3565
3566         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3567
3568 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3571         set, its not supported yet.
3572
3573 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3576         iface wrapper is not found.
3577         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3578
3579 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3582         which have a different name.
3583
3584         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3585         wrappers and Array.GetGenericValueImpl ().
3586
3587         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3588         because of the change above.
3589
3590         * generics.cs: Add a test for full aot + generic array ifaces.
3591
3592 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3593
3594         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3595         that hides the previous one.
3596
3597 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3600         marshalled. Fixes #541623.
3601
3602 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3603
3604         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3605
3606 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3609
3610 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3611
3612         * mini-posix.c (sigprof_signal_handler):
3613         Implemented support for building stat call chans in different ways.
3614
3615 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3616
3617         * mini-exceptions.c (mono_find_jit_info):
3618         Also check that a jit info has been found (fixes a profiler crash).
3619
3620 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3621
3622         * mini.c (mono_codegen):
3623         Call mono_profiler_code_buffer_new with correct code address.
3624
3625 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * driver.c (mono_main): Change the date in the copyright.
3628
3629 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3630
3631         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3632         allocator in shared generic code for open classes, because we
3633         can't get those classes' vtables.  We need to make managed
3634         allocators not depend on the vtable at compile-time to solve this.
3635
3636 2009-10-13  Martin Baulig  <martin@ximian.com>
3637
3638         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3639         `const guint8 *trampoline' argument; send both the old and the new
3640         notification.
3641
3642 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3643
3644         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3645         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3646         (can_marshal_struct): Skip structures with auto layout.
3647
3648         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3649
3650 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3653         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3654         a variable to hold the stack slot used by the int<->float conversion opcodes.
3655
3656         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3657
3658 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3661         when using full-aot.
3662
3663 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3666         each instance of Comparer<T>.
3667
3668         * generics.cs: Add a new test.
3669
3670 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * driver.c (parse_debug_options): Add a 'gdb' option.
3673
3674         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3675
3676         * image-writer.c: Add support for emitting the image into a memory buffer.
3677
3678         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3679
3680         * aot-compiler.c: Add support for registering debug info with GDB using the
3681         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3682         MONO_XDEBUG to 'gdb'.
3683
3684 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3685
3686         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3687         gdb mode.
3688
3689 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3690
3691         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3692         can be used to set breakpoints in gdb.
3693
3694         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3695         segment to an absolute address.
3696
3697 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3698
3699         * method-to-ir.c: Use the managed array allocator method if
3700         available.
3701
3702 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3703
3704         * aot-compiler.c : Fix the MSVC builds
3705
3706         Code is contributed under MIT/X11 license.
3707
3708 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3711         avoid registering 1 symbol file per method with gdb.
3712
3713 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * mini-sparc.c: Fix the handling of enums with base type long.
3716
3717         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3718
3719         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3720         instead of using type->data.klass as the later doesn't work with generics.
3721
3722 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3723
3724         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3725         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3726         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3727         works differently now and we don't handle it in the JIT anymore.
3728
3729         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3730         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3731         the Thread class split.
3732
3733 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * driver.c: Don't run tests with the obsolete treeprop optimization.
3736
3737         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3738         variable volatile. Fixes #541577.
3739
3740         * basic-calls.cs: Add a new test.
3741
3742         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3743
3744 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3745
3746         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3747         work/required with recent iphone sdk versions.
3748
3749         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3750         structures.
3751
3752         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3753         in the VCALL decomposition code.
3754
3755 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3758
3759         * basic.cs: Add a test.
3760
3761         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3762         generic invokes.
3763
3764         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3765         searches all the domains of the current thread.
3766
3767         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3768
3769 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3770
3771         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3772         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3773
3774         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3775         for non-jit trampolines.
3776
3777         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3778
3779         * aot-compiler.c (add_wrappers): Ditto.
3780
3781         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3782         the size of the param area used by dyn_call to 6 which covers the majority of
3783         methods.
3784
3785         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3786
3787         * mini-arm.c: Implement support for passing/receiving
3788         longs and receiving floats in the dyn_call code.
3789
3790         * mini-amd64.c: Implement support for receiving vtypes in registers in
3791         the dyn_call code.
3792
3793         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3794         the dyn_call code.
3795
3796 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * mini-arm.c (get_call_info): Return more precise information in
3799         ArgInfo->regtype.
3800         (dyn_call_supported): Use the information in CallInfo.
3801
3802         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3803
3804         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3805         code.
3806
3807         * mini-arm.c: Update after the dyn_call api changes.
3808
3809         * mini.c (mini_create_jit_domain_info): Register a destructor function
3810         for the runtime_invoke_hash.
3811
3812         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3813         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3814         this function.
3815         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3816         (dyn_call_supported): Simplify this by using get_call_info ().
3817         (mono_arch_dyn_call_free): New destructor function.
3818
3819         * generics.cs: Remove a printf.
3820
3821         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3822
3823         * mini-arm.c: Add support for enum return values and passing a few arguments
3824         on the stack.
3825         
3826         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3827         dyn invoke.
3828
3829         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3830
3831         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3832         the dynamic invoke wrappers.
3833
3834         * mini-arm.c: Implement OP_DYN_CALL for arm.
3835
3836         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3837         supported by the dynamic runtime invoke wrapper.
3838
3839         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3840         runtime invoke wrapper.
3841
3842         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3843         if possible when running with full-aot.
3844
3845         * mini-ops.h: Add OP_DYN_CALL opcode.
3846
3847         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3848         with dynamic arguments lists similar to libffi.
3849
3850 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3851
3852         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3853         
3854         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3855         to NEWARR.
3856
3857         * iltests.il.in: Add a new test.
3858         
3859 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3860
3861         * aot-compiler.c (add_generic_instances): Add more instances of
3862         GenericEqualityComparer.
3863
3864 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3865
3866         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3867
3868 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3869
3870         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3871         comments on some functions that now can fail.
3872
3873 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3874
3875         * Makefile.am: Add Info.plist to EXTRA_DIST
3876
3877 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3878
3879         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3880         static synchronized wrappers. Fixes #539500.
3881
3882 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3885         properly.
3886
3887 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3890         lmf before calling filter clauses as well. Fixes #539550.
3891
3892         * exceptions.cs: Add a test.
3893         
3894 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3895
3896         * aot-compiler.c (add_generic_class): Add instances of
3897         Array.GetGenericValueImpl as well.
3898
3899         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3900         can be tested too.
3901
3902         * generics.cs: Add a fullaot linq test.
3903
3904 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3907         reg r1 on arm.
3908
3909 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3910
3911         * mini-trampolines.c (mono_delegate_trampoline) : Call
3912           mono_cominterop_get_invoke if the delegate target object
3913           is a COM object.
3914
3915         Code is contributed under MIT/X11 license.
3916
3917 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3918
3919         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3920         internal call is defined outside platform code. Reduce code 
3921         duplication with existing [Method|Field]AccessException
3922
3923 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3924
3925         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3926         if the return value is a small struct passed on regs.
3927
3928 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3929
3930         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3931
3932         * mini-codegen.c: Enable the cpu description validation for arm.
3933
3934 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3935
3936         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3937         test which depends on structs to objects.cs.
3938         
3939         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3940         require object model related stuff working.
3941
3942         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3943
3944         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3945
3946         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3947         against the instruction metadata in mini-ops.h. amd64 only for now.
3948
3949         * mini-ops.h: Fix some instruction descriptions.
3950
3951         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3952         unused instructions.
3953
3954 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3955
3956         * exceptions.cs: Add a new test.
3957
3958 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3959
3960         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3961
3962 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3965         skip empty phi opcodes.
3966         
3967         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3968         correctly by zero extending after loads. Skip methods containing calls
3969         to the monitor enter/exit trampolines.
3970
3971         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3972         when calling mono_thread_force_interruption_checkpoint ().
3973
3974         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3975
3976         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3977         64 bit thunks.
3978         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3979
3980         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3981         bootstrap could run.
3982
3983 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3984
3985         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3986
3987 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3990         of the method to
3991         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3992         LLVM might be very short.
3993
3994         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3995         in OP_THROW/RETHROW.
3996
3997         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3998         alignment on osx.
3999
4000 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4001
4002         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
4003         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
4004         LLVM might be very short.
4005
4006 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
4009         the alignment for the value of sp.
4010
4011 2009-09-01  Geoff Norton  <gnorton@novell.com>
4012
4013         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
4014         managed wrappers in full aot.
4015
4016 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
4019
4020 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4021
4022         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
4023
4024 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
4027
4028         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4029         saved info.
4030
4031         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4032
4033         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4034         depend on the info MonoMethodHeader which could be missing in IL stripped
4035         assemblies.
4036
4037 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4038
4039         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4040         they are only 4 byte aligned.
4041
4042 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4043
4044         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4045         was done previously, since using SP causes too many problems.
4046
4047         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4048         frames without a frame pointer works.
4049
4050         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4051         global register in methods with calls, since the calls can go through
4052         a static rgctx trampoline which doesn't save it.
4053
4054 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4057
4058 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4061
4062 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4063
4064         * method-to-ir.c: Fix warnings for uninitialized variables.
4065
4066 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4067
4068         * mini-exceptions.c:
4069         * aot-compiler.c: Fix printf warnings.
4070
4071 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4072
4073         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4074         Add GetGenericValueImpl<string>.
4075         
4076         * aot-compiler.c (add_generic_instances): Add instances of
4077         GenericEqualityComparer<T> for primitive types. Only emit the array
4078         wrappers into the mscorlib image.
4079
4080 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4083         the methods_loaded array using amodule->info->nmethods.
4084
4085         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4086         (MONO_AOT_FILE_VERSION): Bump this.
4087
4088         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4089         to work.
4090
4091         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4092         MonoJitInfo doesn't belong to its methods aot image.
4093
4094 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4097
4098         * mini-arm.c: Fix warnings.
4099         
4100         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4101
4102         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4103         supports it.
4104
4105 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4106
4107         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4108         avoid clobbering IP.
4109
4110         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4111         hold the trampoline argument, so its initial value is available during
4112         debugging.
4113
4114 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4115
4116         * exceptions-arm.c:
4117         * exceptions-hppa.c:
4118         * mini.c:
4119         * exceptions-s390x.c:
4120         * exceptions-mips.c:
4121         * exceptions-ppc.c:
4122         * exceptions-sparc.c:
4123         * exceptions-alpha.c:
4124         * aot-runtime.c:
4125         * mini-trampolines.c:
4126         * exceptions-x86.c:
4127         * exceptions-s390.c: add and use #define's instead of sizeof()
4128         for MonoJitInfo and MonoJitInfoTable.
4129
4130 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4131
4132         * tramp-arm.c:
4133         * tramp-amd64.c:
4134         * tramp-ppc.c:
4135         * tramp-x86.c: use a #define instead of sizeof() for a few
4136         structures that use a zero-length array.
4137
4138 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4139
4140         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4141         case when the method is dynamic. Fixes #529238.
4142
4143 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4146         of asserting when a method is JIT compiled in full-aot mode.
4147
4148 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4149         
4150         Contributed under the terms of the MIT/X11 license by
4151         Jerry Maine <crashfourit@gail.com>.
4152         
4153         * fixed wrong dates in changelog.
4154
4155 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4156         
4157         Contributed under the terms of the MIT/X11 license by
4158         Jerry Maine <crashfourit@gail.com>.
4159
4160         * basic-simd.cs: added test for packed double square root.
4161         * cpu-amd64.md: added opcode info for packed double square root.
4162         * cpu-x86.md: added opcode info for packed double square root.
4163         * mini-ops.h: added IR opcode for packed double square root.
4164         * mini-x86.c: added IR to native translation code for packed double square root.
4165         * mini-amd64.c: removed todo for packed double square root.
4166         * simd-intrinsics.c: added method to IR opcode converstion for
4167         packed double square root.
4168
4169 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4170
4171         Contributed under the terms of the MIT/X11 license by
4172         Jerry Maine <crashfourit@gail.com>.
4173
4174         * mini-amd64.c: Added a change to help tell the difference as 
4175         to what perpose the xmm register is being used--mainly to help
4176         with debuging.
4177         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4178         (one used for special cases) xmm registers for both fp
4179         and simd ops. Added define to turn on new feature in the regalloc
4180         that allows fp and simd ops to share the xmm regs happily.
4181         * codegen.c: Added code to detect for which perpose an xmm reg is
4182         being used (fp or simd) and to translate back and forth to the
4183         correct logical reg bank (fp or simd) for 'spill load's.
4184
4185 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4186
4187         Contributed under the terms of the MIT/X11 license by
4188         Jerry Maine <crashfourit@gail.com>.
4189
4190         * basic-simd.cs: Added tests for stressing the regalloc when running with
4191         16 simd regs and when simd and fp ops share the same reg bank.
4192
4193 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4194
4195         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4196         in shared generic code, we might have to look up the class in the
4197         RGCTX.  If we use the class directly, compute its GC descriptor.
4198
4199 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4200
4201         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4202
4203 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4204
4205         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4206         check for errors. Fixed the case when the class with the Main
4207         method is broken.
4208
4209 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4210
4211         Contributed under the terms of the MIT/X11 license by
4212         Jerry Maine <crashfourit@gail.com>.
4213
4214         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4215
4216 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4217
4218         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4219
4220 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4221
4222         * method-to-ir.c: Fix naming of stelem and ldelem.
4223
4224 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4225
4226         * driver.c (main_thread_handler): Check that the assembly loaded
4227         matches the filename when doing AOT.
4228
4229 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4230
4231         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4232         call it anymore.
4233
4234         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4235         utils/mono-sigcontext.h).
4236
4237         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4238         #ifdef.
4239
4240 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4241
4242         * mini.c (mono_codegen):
4243         Call profiler hook to keep track of method code buffers.
4244
4245 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4246
4247         * method-to-ir.c: Invoke write barriers for the
4248         Interlocked.(Compare)Exchange JIT intrinsics.
4249
4250 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4251
4252         * Makefile.am (version.h): Fix issues when built out of tree.
4253         Remove some redundant 'grep's piped through 'sed's.
4254
4255 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4256
4257         This patch is contributed under the terms of the MIT/X11 license
4258
4259         * mini-ppc.c (mono_arch_output_basic_block):
4260         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4261         for bits 32-47 with signed load/store diplacements for bits
4262         48-63.  Use prefered base/offset order for indexed form.
4263         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4264         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4265         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4266         OP_LOADI2_MEMBASE): Same.
4267         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4268         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4269         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4270         indexed form.
4271         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4272         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4273         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4274         OP_LOADI1_MEMINDEX): Same
4275         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4276         OP_STORER8_MEMINDEX): Same
4277         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4278         computations.
4279         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4280         for bits 32-47 with signed load/store diplacements for bits
4281         48-63.  Use prefered base/offset order for indexed form.
4282
4283 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4284
4285 This patch is contributed under the terms of the MIT/X11 license
4286
4287         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4288         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4289         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4290         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4291         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4292         cfg->stack_usage to avoid size warnings.
4293         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4294         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4295         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4296         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4297         to convert.
4298         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4299         after code varible is initialized.
4300         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4301         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4302         (mono_arch_emit_epilog): 
4303         Move Use ppc_load32 for cfg->stack_usage to avoid size
4304         warnings.
4305
4306 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4307
4308         * method-to-ir.c: The write barrier doesn't do the store anymore,
4309         so we have always to emit it.  Also, emit the wbarrier after the
4310         store.
4311
4312 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4313
4314         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4315         for argument count 3 too.
4316
4317 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4320         the caller handle the exceptions.
4321         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4322         method. Fixes #524498.
4323
4324 2009-07-22  Geoff Norton  <gnorton@novell.com>
4325
4326         * mini-exceptions.c: Fix build on ia64.
4327
4328 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4329
4330         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4331         barriers.
4332
4333 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4336         code.
4337
4338 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * basic-simd.cs (Main): Pass args to the test driver.
4341
4342 2009-07-20  Geoff Norton  <gnorton@novell.com>
4343
4344         * mini-x86.h: Fix the x86 version guards to use Apple's
4345         properly defined macros.
4346
4347 2009-07-20  Geoff Norton  <gnorton@novell.com>
4348
4349         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4350         aligned access.
4351
4352 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4355         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4356         the information which is needed for invokes, so only one locking+hash table
4357         lookup is needed.
4358
4359         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4360         
4361         * aot-compiler.c (add_generic_instances): Emit instances of 
4362         GenericComparer<T> for primitive types.
4363
4364 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4365
4366         * mini-posix.c: Fix linux build.
4367
4368 2009-07-19  Geoff Norton  <gnorton@novell.com>
4369
4370         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4371         mono_gdb_render_native_backtraces
4372         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4373         so we implement the sane semantics to the runtime here
4374         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4375         so we need to call it differently (mono_gdb_render_native_backtraces)
4376         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4377         here for default implementations.
4378         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4379         support Apple's weird syscall (SYS_fork) implementation and not busy
4380         loop in abort() on native crashes on OSX anymore.
4381
4382 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4383
4384         * aot-runtime.c (load_method): Change the handling of the
4385         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4386         are used.
4387
4388         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4389
4390 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4393         seems to break the aot tests.
4394         
4395         * mini.c (mono_patch_info_equal): Fix the handling of 
4396         MONO_PATCH_INFO_RGCTX_FETCH.
4397
4398 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4399
4400         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4401
4402         * mini.c (mono_patch_info_hash): Fix the handling of 
4403         MONO_PATCH_INFO_INTERNAL_METHOD.
4404         (mono_patch_info_equal): Ditto.
4405
4406 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4409         in a few places.
4410         
4411         * mini-llvm.c: Add some infrastructure for AOT support.
4412
4413 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * mini-llvm-cpp.c: Update to the latest llvm api.
4416         
4417         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4418         option to false to prevent llvm from installing signal handlers which
4419         trip up the gc.
4420         
4421 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4422
4423         * cpu-x86.md:
4424         * cpu-amd64.md: Revert previous change as those instructions
4425         take 2 separate arguments. Remember to read the arch docs more
4426         carefully next time.
4427
4428 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4431
4432 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4433
4434         * mini-ppc.c: exploit multiple load/store units if available (rest of
4435         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4436         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4437
4438 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4439
4440         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4441         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4442
4443 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4444
4445         * cpu-x86.md: Fix missing clobbering from trancendental simd
4446         ops.
4447
4448         * cpu-amd64.md: Same.
4449
4450 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4451
4452         Contributed under the terms of the MIT/X11 license by
4453         Jerry Maine <crashfourit@gail.com>.
4454
4455         * basic-simd.cs: Added tests for single and doulble indexers.
4456
4457         * cpu-amd64.md: Added simd opcode information.
4458
4459         * mini-amd64.c: Added IR to native simd generation code.
4460         Added simd register names and function that returns them.
4461
4462         * mini-amd64.h: Added marcos to turn on simd code compilation in
4463         amd64. Added max simd register count marco. Added caller/callee
4464         register mask marcos. Added marcos to use simd register bank.
4465
4466         * mini.h: Added helper marco for shufling dwords and simple
4467         floats.
4468
4469 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4472
4473         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4474
4475         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4476         the length of the native code as well.
4477
4478         * basic-simd.cs: Add a test for #521662.
4479
4480 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4481
4482         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4483
4484 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4485
4486         * mini.c: Register function for getting the IP from a signal
4487         context with metadata.
4488
4489 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4492         call a generic class init trampoline if needed. Fixes #519336.
4493
4494         * generics.cs: Add a test.
4495         
4496 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4497
4498         * method-to-ir.c: When doing a call which might be remote from
4499         shared generic code to other shared code with open type arguments,
4500         get the remoting invoke wrapper from the RGCTX and do an indirect
4501         call to it.
4502
4503 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4506         after the unbox trampoline in the full-aot case.
4507
4508 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4509         
4510         * mini.c: Move initialization of jit_mutex before debugger initialization
4511         
4512         to avoid crashes.
4513         
4514         
4515         * Info.plist: added Info.plist and link flag to enable the mono executable
4516         to access other processes. Requires codesigning of the executable to work.
4517         
4518         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4519         
4520         compile on OS X.
4521         
4522
4523 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4524
4525         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4526
4527 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4530         when the generic instance is an instantiation of a subclass of the
4531         methods class. Fixes #517166.
4532
4533 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4536         code.
4537
4538         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4539         AOTed code.
4540
4541         * CMakeLists.txt: Add minimal support for installation.
4542
4543 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4546         determine whenever a method is directly callable to a separate function.
4547
4548         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4549         needed ones as a result of the previous change.
4550
4551         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4552         type of register arrays.
4553
4554         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4555         type of register arrays.
4556
4557 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4558         
4559         Contributed under the terms of the MIT/X11 license by
4560         Jerry Maine <crashfourit@gail.com>.
4561
4562         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4563
4564 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4567
4568 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4569
4570         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4571         dump of structure return value. Fix some formatting.
4572         * cpu-s390x.md: Fix lengths of instruction sequences.
4573         * mini-s390.c: Minor formatting changes.
4574
4575 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4578         Use sigaction on freebsd as well.
4579
4580 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4581
4582         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4583         uses #ifdef on it.
4584         
4585         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4586
4587 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4588
4589         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4590
4591 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4592
4593         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4594
4595 2009-06-20  Martin Baulig  <martin@ximian.com>
4596
4597         * debug-mini.c
4598         (MonoDebuggerThreadFlags): New enum typedef.
4599         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4600         (mono_debugger_thread_created): Added `gpointer func' argument;
4601         initialize the new `thread_flags' field.
4602
4603 2009-06-18  Martin Baulig  <martin@ximian.com>
4604
4605         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4606         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4607
4608         * debug-debugger.c
4609         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4610         flag in `MONO_DEBUGGER__info.runtime_info'.
4611
4612         * driver.c
4613         (mono_main): Call mini_debugger_set_attach_ok() if generics
4614         sharing is disabled.
4615
4616 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4617
4618         * aot-compiler.c (add_wrappers): Fix a warning.
4619
4620         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4621         the ppc load/store macro changes.
4622
4623 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4626
4627         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4628         not just the got symbol.
4629
4630         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4631         on ppc.
4632
4633         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4634         ppc.
4635         
4636         * aot-compiler.c: Remove some fixmes.
4637
4638         * driver.c (mono_main): Print a helpful message when cross-compiling.
4639
4640         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4641
4642         * method-to-ir.c (initialize_array_data): Do the optimization if the
4643         target byte order is little endian, instead of the host byte order.
4644
4645         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4646         wrappers into the mscorlib image, Emit a unique plt symbol for each
4647         image, emit symbols for plt entries.
4648
4649         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4650         a .size directive.
4651         
4652 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * aot-compiler.c (add_wrappers): Avoid calling 
4655         mono_marshal_get_type_info () since it can assert for some types.
4656
4657         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4658         ldtoken are used inside wrappers.
4659
4660         * helpers.c: Add support for prefixing tools with the arch name.
4661
4662         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4663         quantities when using ilp32.
4664
4665         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4666         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4667
4668         * image-writer.c: Use .long on ilp32.
4669
4670         * aot-compiler.c: Use 32 bit loads on ilp32.
4671         
4672 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4673
4674         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4675
4676         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4677
4678         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4679
4680         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4681         second got slot of every aot image.
4682         
4683         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4684         aot on platforms with function pointers.
4685
4686         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4687         support for aot/full aot on ppc/ppc64.
4688         
4689         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4690         arguments which are needed on ppc.
4691
4692         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4693         argument.
4694
4695         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4696         
4697         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4698
4699         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4700
4701         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4702
4703         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4704
4705 2009-06-17  Geoff Norton  <gnorton@novell.com>
4706
4707         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4708
4709 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4712         to control whenever the dwarf writer is in xdebug or aot mode.
4713         (emit_class_dwarf_info): Use a separate abbrev for structures without
4714         children.
4715
4716         * aot-compiler.c: Pass the appending parameter to 
4717         mono_dwarf_writer_create ().
4718
4719         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4720         falls through to its next bblock. Fixes #513931.
4721
4722         * iltests.il: Add a test.
4723
4724         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4725         infor even if emit_line is FALSE, as the apple linker seems to require it.
4726
4727         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4728
4729         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4730         gcc does.
4731         (emit_fde): Ditto.
4732
4733 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4734
4735         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4736         mips build.
4737
4738 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4741         'has_call_handler' fields.
4742
4743         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4744
4745         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4746         first bblock if not needed. Fixes #512790.
4747         
4748 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4751         
4752         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4753         wrappers.
4754
4755         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4756         remoting-invoke-with-check wrappers, which are not needed when running with
4757         full-aot, since it doesn't support remoting.
4758         
4759 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4762
4763         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4764         method info, it is not used anymore.
4765
4766         * mini.h: Bump AOT file format version.
4767         
4768         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4769         word smaller.
4770
4771         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4772         change above.
4773         
4774         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4775
4776         * mini.h: Bump AOT file format version.
4777         
4778 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4779
4780         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4781         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4782         iphone.
4783
4784         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4785         of CKFINITE and FBGE for VFP.
4786
4787 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * aot-compiler.c: Don't align code to 16 bytes on arm.
4790         
4791         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4792         before the methods they belong to.
4793
4794         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4795         the full-aot case if possible, since the trampoline will be called right 
4796         away.
4797
4798         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4799         trampolines to 1024 after the change above.
4800
4801         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4802         trampoline to save 8 bytes per trampoline.
4803
4804         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4805         change above.
4806
4807 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4810
4811 2009-06-08  Martin Baulig  <martin@ximian.com>
4812
4813         * debug-mini.c
4814         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4815         (_mono_debugger_throw_exception): Don't make this static.
4816         (_mono_debugger_unhandled_exception): Likewise.
4817         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4818
4819         * debug-mini.c
4820         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4821         (_mono_debugger_throw_exception): Add function prototype.
4822         (_mono_debugger_unhandled_exception): Likewise.
4823
4824         * mini-exceptions.c
4825         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4826         arg; return the first exception handler if the exception is caught
4827         and we're running inside the debugger.
4828         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4829         improve exception handle inside runtime-invoke, check whether the
4830         exception is actually caught in the method being invoked and not
4831         by the runtime-invoke-wrapper.
4832
4833 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4834
4835         * image-writer.c: Improve support for the osx assembler.
4836
4837         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4838         support them.
4839
4840 2009-06-08  Martin Baulig  <martin@ximian.com>
4841
4842         * debug-mini.c
4843         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4844         (_mono_debugger_throw_exception): Don't make this static.
4845         (_mono_debugger_unhandled_exception): Likewise.
4846         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4847
4848         * debug-mini.c
4849         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4850         (_mono_debugger_throw_exception): Add function prototype.
4851         (_mono_debugger_unhandled_exception): Likewise.
4852
4853         * mini-exceptions.c
4854         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4855         arg; return the first exception handler if the exception is caught
4856         and we're running inside the debugger.
4857         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4858         improve exception handle inside runtime-invoke, check whether the
4859         exception is actually caught in the method being invoked and not
4860         by the runtime-invoke-wrapper.
4861
4862 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * image-writer.c (append_subsection): Don't align subsections of the
4865         debug_line section as a workaround.
4866
4867         * dwarfwriter.c: Emit line number info in the AOT case as well.
4868
4869 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4870
4871         This patch is contributed under the terms of the MIT/X11 license
4872
4873        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4874        code_len <= code_size
4875
4876 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4879
4880 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4883         invoke wrappers, we now use trampolines instead.
4884
4885 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4886
4887         * mini-darwin.c: The exception thread must not be registered with
4888         the GC.
4889
4890 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4891
4892         * mini-gc.c: Disable the code because it makes SGen crash.
4893
4894 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4897         instead of asserting.
4898
4899 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4902         output file after the code has been compiled.
4903
4904 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4907
4908 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4909
4910         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4911         entries distinction to simplify the code.
4912
4913         * mini.h: Bump AOT file format version.
4914         
4915 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * objects.cs: Fix the signature of one of the tests.
4918
4919         * mini.c (mini_create_ftnptr): New helper function, moved here from
4920         object.c.
4921         (mini_get_addr_from_ftnptr): Ditto.
4922         (mini_init): Install the new helpers.
4923
4924 2009-05-28  Martin Baulig  <martin@ximian.com>
4925
4926         Correctly initialize the debugger when embedding Mono.
4927
4928         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4929         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4930         see documentation in mini_debug_running_inside_mdb().
4931
4932         * debug-debugger.c
4933         (mini_debug_running_inside_mdb): New function to check whether
4934         we're running inside mdb.
4935
4936         * mini.c (mini_init): Call mini_debugger_init() if we're running
4937         inside the debugger.
4938
4939         * driver.c (mono_main): Moved the call to mini_debugger_init()
4940         into mini_init() to make this work when embedding Mono.
4941
4942         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4943         calls to mini_debugger_init().
4944
4945         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4946         mono_debugger_main() -> mini_debugger_main() and put them inside a
4947         `MONO_DEBUGGER_SUPPORTED' conditional.
4948
4949 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4950
4951         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4952         this is no longer in use.
4953         * mini.h: Same.
4954
4955 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4958
4959         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4960         methods.
4961
4962 2009-05-27  Martin Baulig  <martin@ximian.com>
4963
4964 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4967         long_conv_to_r_un to 64 bits.
4968
4969         * cpu-x86.md: Increase the instruction size due to the changes.
4970
4971         * iltests.il.in: Add regression test.
4972
4973         Fixes #467201.
4974
4975 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4976
4977         * objects.cs: Move the previous test from basic.cs to here.
4978
4979 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * basic.cs: Add regression test for #506915.
4982
4983 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4984
4985         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4986         optimization we must check the bb of the first byte of stobj as
4987         it's the only one set in cil_offset_to_bb.
4988
4989         Fixes #506915.  
4990
4991 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4992
4993         * image-writer.c: Fix pointer directive on ppc64.
4994
4995 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4996
4997         * image-writer.c (asm_writer_emit_section_change): Avoid using
4998         .bss subsections on ppc too.
4999
5000 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * image-writer.c: Fix the definition of TARGET_ASM_....
5003         
5004         * image-writer.c: Fix the emission of assembler directives in the last
5005         change.
5006
5007         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
5008         exception throwing code to accomodate ppc64.
5009
5010         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
5011         size to work on ppc64 too.
5012
5013         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
5014         too.
5015
5016         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
5017         the assembler dialect instead of using platform specific defines.
5018
5019 2009-05-22  Geoff Norton  <gnorton@novell.com>
5020
5021         * mini-arm.c (get_call_info): If a structure is split between the stack
5022         and argument registers, we should not advance the stack pointer by the entire
5023         native size, but just by the amount that spilled.
5024
5025 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
5026
5027         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5028         correctly.
5029
5030 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5031
5032         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5033         wrappers normally.
5034         
5035         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5036         methods so wrapper don't get added twice.
5037         (add_generic_instances): Don't add methods of arrays.
5038
5039         * generics.cs: Mark one test as !FULLAOT.
5040
5041 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * mini-x86.c (emit_move_return_value): Remove unused vars.
5044
5045 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5048         decomposing 8 bytes structs into a LCALL.
5049
5050         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5051         pointer for where to store the returned regs.
5052
5053         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5054         state the concern.
5055
5056         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5057
5058 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5059
5060         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5061         without getenv.
5062
5063 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5064
5065         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5066
5067         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5068         generics.
5069
5070 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5071
5072         * local-propagation.c (mono_local_cprop): Avoid local propagation
5073         across paired add/sub if the first instruction dest reg is it's
5074         source reg. For example:
5075
5076         int_add_imm R12 <- R12 [1] clobbers: 1
5077         int_sub_imm R42 <- R12 [1] clobbers: 1
5078
5079         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5080         maintain the math identify.
5081
5082         Fixes #505375.
5083
5084 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5085
5086         * Makefile.am: avoid going on the network just to get the revision,
5087         use git log instead
5088
5089 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5090
5091         Fixed estimate for short branches on amd64 (they were off mark, and
5092         enabling call prolog-epilog instrumentations caused assertions).
5093         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5094         estimate for the maximum length of this basic block.
5095         * mini-amd64.c:
5096         - mono_arch_emit_prolog: compute max_length for each basic block
5097           (instead of max_offset), and inflate size estimate also for entry bb
5098           in case of code instrumentation.
5099         - mono_arch_output_basic_block: get rid of "cpos" (the current
5100           estimated "position" in the code), and always use "offset" instead,
5101           which is accurate; at the beginning of the function quickly recompute
5102           max_offset for all the remaining blocks, starting from the current
5103           cfg->code_len (which is correct, and not estimated) and using the
5104           estimated block lengths computed previously.
5105
5106 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5109         functions, it is already done in the caller.
5110
5111         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5112
5113         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5114         MONO_ARCH_GSHARED_SUPPORTED define.
5115
5116         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5117
5118         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5119         function.
5120
5121 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5124         call to mono_marshal_get_rgctx_invoke ().
5125
5126         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5127         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5128         gshared use the static rgctx trampolines now.
5129         
5130         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5131         platform supports it.
5132
5133 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5134
5135         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5136
5137         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5138
5139 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5140
5141         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5142
5143         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5144         for ppc.
5145
5146 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5147
5148         Made it possible for mono_arch_instrument_epilog to preserve
5149         argument registers, otherwise instrumenting the "epilogue" before
5150         a tail call would clobber them.
5151         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5152         if like mono_arch_instrument_epilog but with an additional parameter
5153         that states if argument registers must be preserved.
5154         * mini.c: implemented mono_arch_instrument_epilog as a call to
5155         mono_arch_instrument_epilog_full without asking to preserve argument
5156         registers (this makes the existing code work as usual).
5157         * mini-amd64.c:
5158         - mono_arch_instrument_epilog: add parameter to transform it into
5159         mono_arch_instrument_epilog_full, and preserve argument registers
5160         when required.
5161         - mono_arch_output_basic_block, OP_TAILCALL case: call
5162         mono_arch_instrument_epilog_full.
5163         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5164         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5165         only transformed mono_arch_instrument_epilog into
5166         mono_arch_instrument_epilog_full.
5167
5168 2009-05-15  Geoff Norton  <gnorton@novell.com>
5169
5170         * mini-darwin.c: This works on arm now.
5171
5172 2009-05-14  Geoff Norton  <gnorton@novell.com>
5173
5174         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5175         embedding api.
5176
5177 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5180         label names.
5181
5182         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5183         wrappers during full aot mode correctly.
5184
5185         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5186         methods correctly.
5187
5188         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5189         mono_metadata_type_hash ().
5190
5191 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5192
5193         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5194         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5195         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5196         Removed MONO_INST_BRLABEL from the instruction flags, and the
5197         remaining code that used it, because we do not support branches inside
5198         basic blocks (and branch target labels) anymore.
5199         * Makefile.am: As part of the above cleanup, remove reference to
5200         BURG files which don't exist anymore.
5201
5202 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5203
5204         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5205         osx.
5206
5207         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5208         to use mono_arch_throw_corlib_exception.
5209
5210         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5211         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5212
5213         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5214         domain mempool.
5215
5216         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5217
5218         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5219         for the got to make debugging easier and to avoid confusing it with the
5220         system got.
5221         
5222         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5223         method so a breakpoint can be set when using gdb.
5224
5225 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5228         on mono_method_get_imt_slot ().
5229
5230         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5231         num_decodes variables.
5232
5233         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5234         change as it doesn't seem to work.
5235         
5236         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5237         wrappers.
5238
5239 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5242         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5243
5244         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5245         builder when using full aot.
5246
5247         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5248         here, it is already handled.
5249         
5250         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5251         correctly for IMT.
5252
5253         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5254
5255         * mini-arm.h: Enable IMT for full aot.
5256         
5257         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5258         arch doesn't support it.
5259
5260         * mini.c (mini_init): Don't disable IMT for full aot if the
5261         architecture supports it.
5262
5263         * mini.h (MonoAotTrampoline): New enum containing the different types
5264         of 'numerous' trampolines.
5265         (MONO_AOT_FILE_VERSION): Bump this.
5266
5267         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5268         static rgctx trampolines. Add support for full-aot IMT thunks.
5269
5270         * mini-amd64.h: Enable IMT for full aot.
5271
5272         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5273         to exclude tests belonging to a category.
5274
5275         * generics.cs: Mark some tests with a !FULLAOT category.
5276
5277         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5278         generics tests.
5279
5280 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5283         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5284         (emit_plt): Fix a warning.
5285
5286 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5289         back into aot-compiler.c to a place where the other functions shared by
5290         the runtime and aot compiler are.
5291         
5292         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5293         as done previously, instead of in MonoAotFileInfo, since pointers might have
5294         alignment requirements.
5295
5296         * mini.h: Bump AOT file format version.
5297
5298 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5299
5300         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5301         that is used at runtime from the aot-compiler.c, this makes it
5302         work on setups that remove the AOT compiler from the output
5303         image. 
5304
5305 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5308         PPC.
5309
5310         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5311
5312         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5313
5314         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5315         stuff to mono_arch_decompose_long_opts ().
5316         (mono_decompose_opcode): Remove some dead code.
5317
5318 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5319
5320         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5321         cmethod can be null for quite a some reasons.
5322
5323 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5324
5325         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5326
5327 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5330
5331 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5334         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5335         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5336         calls returning structures by addr on amd64.
5337
5338         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5339
5340         * iltests.il.in: Restructure the tail call tests a bit.
5341         
5342 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5343
5344         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5345         for virtual methods too.
5346
5347 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5348
5349         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5350         due to regression in verifying System.dll.
5351
5352 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5353
5354         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5355         in dynamic methods.
5356
5357         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5358         instances.
5359
5360         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5361         g_str_hash () which can change.
5362
5363         * driver.c (mini_regression): Disable optimizations not supported by
5364         the cpu. Fixes #500019.
5365
5366         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5367         build.
5368
5369 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5372         to the latest LLVM code.
5373
5374 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5377
5378 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5381         x86/amd64.
5382
5383         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5384         no longer saving offsets, so just save the patch types along with the other
5385         info.
5386         * aot-runtime.c (load_patch_info): Update after the changes to 
5387         encode_patch_list ().
5388         (decode_got_entry): Removed, merged into load_patch_info ().
5389         (is_shared_got_patch): Removed, call the same function from
5390         aot-compiler.c.
5391
5392         * mini.h: Bump aot file format version.
5393         
5394         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5395         half-finished no-dlsym code.
5396
5397         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5398         option.
5399
5400         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5401         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5402
5403 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5404
5405         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5406         buffer length to work with AOT code.
5407
5408         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5409         ldfld/stfld opcodes.
5410
5411         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5412         as it is not used.
5413
5414         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5415
5416         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5417
5418         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5419         LLVM API.
5420
5421         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5422         if needed. Don't decompose long operations when using llvm.
5423
5424 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5425
5426         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5427         PAGESIZE constant.
5428
5429         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5430
5431 2009-05-03  Martin Baulig  <martin@ximian.com>
5432
5433         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5434         mono_debugger_insert_method_breakpoint() since the class init
5435         handler we're inserting at the top of the method already gives us
5436         a notification.
5437
5438 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5439
5440         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5441         to mono_arch_decompose_long_opts () for x86 and arm.
5442
5443 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5444
5445         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5446         TARGET_AMD64 here.
5447
5448 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5451         JIT code.
5452
5453 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5456         number of trampolines used in full-aot mode.
5457
5458         * aot-compiler.c: Add an ntrampolines option to set the number of 
5459         trampolines emitted in full-aot mode.
5460
5461 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5464         a volatile load. Get rid of get_tempname (), llvm assigns names
5465         automatically.
5466
5467         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5468         builder function.
5469
5470         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5471         a value.
5472
5473         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5474         level 1.
5475
5476         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5477         to the same register as a fixed sreg2. Fixes #497271.
5478
5479         * iltests.il.in: Add a new test.
5480
5481 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5484         stack, since pushes complicate exception handling.
5485
5486         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5487         the stack if they are passed using moves.
5488
5489         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5490
5491         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5492         when using llvm.
5493
5494         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5495         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5496         of FMOVE if it is an R4.
5497
5498 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5501
5502         * mini.h (LLVMCallInfo): New structure to store calling convention 
5503         information for the LLVM back end similar to the CallInfo structures in 
5504         the back-ends.
5505
5506         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5507         call information in a format usable by LLVM.
5508         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5509
5510         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5511         mono_llvm_emit_call () when compiling using LLVM.
5512
5513         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5514         comments to all functions. Fix memory leaks. Add a public init/cleanup
5515         function.
5516
5517         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5518
5519         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5520         mono_array_new_va () jit icall.
5521         
5522 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5523
5524         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5525         multiple machine description files to be specified.
5526         * mini-ops.h: fixes for cross-compilation.
5527
5528 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5529
5530         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5531         some porting work.
5532
5533 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5536         to prevent asserts in various passes. Fixes #497220.
5537
5538 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5541         a racy assert.
5542
5543         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5544         table to avoid duplicates.
5545
5546         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5547         
5548         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5549         option is used.
5550
5551 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5552
5553         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5554         is for method or field access.
5555
5556 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5557
5558         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5559         a Value to stdout.
5560
5561         * mini-llvm.c (mono_llvm_emit_method): Use it.
5562         
5563         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5564         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5565         on volatile values.
5566
5567         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5568         synchronized methods.
5569
5570         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5571
5572         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5573
5574         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5575         OP_LOADI8_MEM.
5576
5577         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5578         allowing some options to be set dynamically.
5579
5580 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5581
5582         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5583         unconditional branch.
5584
5585         * mini.h (MonoTrampolineType): Add new trampoline type 
5586         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5587         compiled code.
5588
5589         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5590         function.
5591
5592         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5593         creation function.
5594
5595         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5596         is enabled. Instead, use the llvm vcall trampoline.
5597         
5598         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5599
5600         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5601         
5602         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5603         functions.
5604
5605         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5606         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5607
5608         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5609         OP_IA64_CSET opcode.
5610
5611         * mini.c: Fix a warning.
5612
5613         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5614         THROW to the appropriate llvm type.
5615
5616 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini.c (mini_method_compile): Add statistics for methods JITted
5619         with/without LLVM.
5620
5621 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5624         OP_IA64_CMP_<cond>_IMM opcodes.
5625
5626 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5629         corlib exceptions.
5630
5631         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5632         correctly.
5633
5634         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5635         GENERICINST.
5636
5637 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5638
5639         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5640
5641 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5642
5643         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5644         support.
5645
5646         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5647         rgctx invoke trampolines for x86.
5648
5649         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5650         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5651         (mono_arch_get_vcall_slot): Simplify this.
5652
5653 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5656         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5657
5658 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5659
5660         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5661         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5662
5663         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5664
5665         * liveness.c (visit_bb): Remove a needless assert.
5666
5667 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5668
5669         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5670         full aot support to the arch specific code.
5671
5672         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5673
5674         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5675
5676         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5677         
5678         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5679         collect information about the delegate invoke impl trampolines.
5680
5681         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5682         to save trampolines during full-aot mode.
5683
5684         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5685         creation function which returns a trampoline which sets the rgctx
5686         argument.
5687         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5688         wrapper if possible.
5689         (mono_delegate_trampoline): Ditto.
5690
5691         * mini.c (mono_jit_runtime_invoke): Ditto.
5692
5693         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5694         
5695         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5696
5697         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5698         
5699 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5702         just setting the opcode to OP_NOP.
5703
5704 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * mini.c (mini_method_compile): Put the last change inside an 
5707         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5708         
5709         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5710         and extend live ranges to cover the whole method when using xdb.
5711
5712         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5713         do it in the trampolines.
5714
5715         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5716         needed.
5717
5718         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5719         
5720         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5721         call code in full-aot mode since IMT is disabled there.
5722         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5723         new JIT no longer has that restriction.
5724
5725         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5726
5727         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5728         a more compact format.
5729         (mono_aot_wrapper_name): New function to return a unique name for a
5730         wrapper method, also used by the AOT runtime.
5731
5732         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5733         aot-compiler.c.
5734
5735         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5736         when a ICollection<T> etc is encountered.
5737         (add_generic_instances): Process method arguments/locals too.
5738         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5739         trampoline names.
5740
5741         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5742         
5743 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5746
5747         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5748
5749         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5750         representing the result of the decomposition. Nullify instructions
5751         instead of setting them to OP_NOP since nops can't have registers
5752         set.
5753
5754 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5757         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5758         info. Strip 'mapping symbols' on ARM.
5759
5760         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5761         
5762         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5763         this with the native genmdesc.
5764
5765 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5766
5767         * aot-runtime.c:  Fixing the MSVC build.
5768
5769         Code is contributed under MIT/X11 license.
5770
5771 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5774         JITted code depends on it.
5775
5776 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5777
5778         * aot-compiler.c: Use new MonoGenericParam accessors.
5779
5780 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5781
5782         Reduce memory usage and improve correctness wrt MonoGenericParam
5783         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5784         handing.  Avoid allocating MonoGenericParams, but use the ones in
5785         the container itself.
5786
5787 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5788
5789         * tasklets.c: Return exceptions in the out argument.
5790
5791 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5792
5793         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5794         opcode. Use pointer types in more places instead of casting them to 
5795         integers.
5796
5797         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5798         optimizations.
5799         (mono_llvm_optimize_method): New helper function to optimize a method.
5800
5801         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5802         widening code so it could be called from more places.
5803         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5804         code paths in the call opcodes.
5805
5806 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5807
5808         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5809
5810 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * dwarfwriter.c: Use _ to separate class name 
5813         components as gdb can't handle '.'. Represent reference variables
5814         as 'class <NAME>&'.
5815         
5816         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5817
5818         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5819         
5820         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5821
5822         * gc-test.cs: New file with GC stack marking tests.
5823         
5824         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5825         negative numbers for vfp.
5826
5827         * basic-float.cs: Add a test.
5828         
5829 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5830
5831         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5832
5833 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5834
5835         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5836         part of tasklet/continuation support.
5837
5838 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5841         amd64 opcodes inside an ifdef.
5842
5843         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5844         of complex types.
5845         
5846         * dwarfwriter.c (emit_type): Emit the class info for classes.
5847
5848 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5851
5852         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5853
5854         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5855
5856         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5857
5858 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5861
5862         * mini-llvm.c: Update comments.
5863
5864         * mini.h (COMPILE_LLVM): New macro.
5865
5866         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5867
5868         * ssa.c (mono_ssa_compute): Ditto.
5869         
5870         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5871         the unwind ops from a DWARF FDE.
5872
5873         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5874         methods by extracting the dwarf unwind ops from the unwind info generated
5875         by LLVM.
5876         
5877         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5878         calls.
5879
5880         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5881         addressing modes.
5882
5883 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * Makefile.am (llvm_sources): Enable this.
5886
5887         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5888         failing back to the JIT if something cannot be handled.
5889
5890         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5891         compiling with LLVM.
5892
5893         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5894         compiling with LLVM.
5895
5896         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5897         compiling with LLVM.
5898
5899         * mini-ops.h: Add a few opcodes needed by LLVM.
5900
5901         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5902         has no unwind info.
5903
5904         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5905         backend.
5906
5907         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5908
5909         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5910
5911 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5912
5913         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5914         ridiculously large methods.
5915
5916 2009-03-31  Martin Baulig  <martin@ximian.com>
5917
5918         * debug-debugger.c (debugger_remove_breakpoint): Call
5919         mono_debugger_remove_class_init_callback ().
5920
5921 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5924         right before emitting code, not at the start.
5925
5926         * mini.c (mono_postprocess_patches): Extract this into a separate function
5927         from mono_codegen ().
5928
5929         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5930         byref types correctly.
5931
5932 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5935         by the last change.
5936
5937 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5940         indirect calls, this avoids problems where get_vcall_slot () would get
5941         confused by the native code for the instruction preceeding the call.
5942         (mono_arch_get_vcall_slot): Simplify this.
5943         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5944
5945         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5946         register allocator now seems to depend on them instead of the data in
5947         cpu-<ARCH>.md.
5948
5949         * mini.c (mini_method_compile): Throw the correct type of exception if
5950         mono_method_get_header () fails because of a loading error.
5951
5952 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * mini.c (mini_method_compile): Clear the loader error if the method
5955         header cannot be decoded.
5956
5957         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5958         interface methods on proxies correctly.
5959
5960         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5961         this argument for vtype methods. Add precise liveness info for arguments.
5962
5963         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5964         LIVERANGE_START/END opcodes.
5965
5966         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5967         for arguments and values in registers.
5968
5969 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5970
5971         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5972         return a valuetype. Fixes #487518.
5973
5974         * iltests.il: Add a test.
5975         
5976         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5977
5978         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5979         closed over a null reference correctly.
5980
5981 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5984
5985 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5986
5987         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5988         allocated to the same registers as fixed sregs.
5989
5990 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5991
5992         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5993         ATOMIC_CAS_IMM ops.
5994
5995         * method-to-ir.c: Handle more cases for
5996         Interlocked.CompareExchange.
5997
5998         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5999         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
6000         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
6001
6002 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * aot-runtime.c (decode_method_ref): Fix a warning.
6005
6006         * unwind.c (mono_unwind_frame): Ditto.  
6007
6008 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
6011         (mono_compile_assembly): Enable the binary writer for full-aot as well.
6012
6013         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
6014         fix the handling of large values in the ALU_PC_G0_NC relocation.
6015
6016 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
6019
6020 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6021
6022         * method-to-ir.c (mono_spill_global_vars): Support for ternary
6023         ops.
6024
6025 2009-03-22  Mark Probst  <mark.probst@gmail.com>
6026
6027         * method-to-ir.c: MINI_OP3 needs a comma.
6028
6029         * method-to-ir.c, mini.h, mini.c: Remove
6030         mono_init_op_sreg_counts ().
6031
6032 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6033
6034         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6035         OP_JMP.
6036         
6037         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6038         assertion.
6039
6040         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6041
6042         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6043         code somewhat.
6044
6045 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6046
6047         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6048         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6049         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6050         operations.
6051
6052 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * driver.c: Change location of gc_wrapper.h.
6055
6056         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6057         inside finally clauses correctly. Fixes #485721.
6058
6059         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6060         after the change above.
6061
6062         * exceptions.cs: Add a test.
6063         
6064 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6067
6068         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6069         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6070         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6071
6072         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6073         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6074
6075 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6076
6077         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6078         Simplify logic for ensure_method_is_allowed_to_call_method. 
6079         Handle wrappers on callers.
6080
6081 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6084         them don't run yet.
6085
6086         * basic-simd.cs: Fix the names of some test methods.
6087
6088 2009-03-18  Geoff Norton  <gnorton@novell.com>
6089
6090         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6091
6092 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6095
6096 2009-03-17  Jb Evain  <jbevain@novell.com>
6097
6098         * driver.c: remove now uneeded call to mono_gc_base_init before
6099         mono_profiler_load.
6100
6101 2009-03-17  Jb Evain  <jbevain@novell.com>
6102
6103         * dwarfwriter.c (token_handler): handle more cases.
6104
6105 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6106
6107         * method-to-ir.c: Remove more dead code (that was required only
6108         because of method_is_safe). Fix compiler warnings.
6109
6110 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6111
6112         * method-to-ir.c: Remove unneeded/useless method_is_safe
6113         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6114
6115 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * mini.c (mini_method_compile): Print the method been compiled with
6118         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6119         for people not familiar with the runtime.
6120
6121 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6122
6123         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6124         a managed object which is later put into a GList. Return its class instead.
6125
6126         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6127         stack slots when using sgen.
6128
6129 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6130
6131         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6132
6133 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6136         > so it works on the first vreg as well.
6137
6138 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6141         trigger randomly.
6142
6143         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6144         
6145         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6146         implement GArray.
6147
6148 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6151         native->IL offset mapping.
6152
6153 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6156
6157         * basic.cs: Add a test.
6158
6159 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6160
6161         * mini-x86.c (mono_arch_output_basic_block): Use different
6162         registers in case the ones we want to overwrite are used by the
6163         other operand.  Fixes regression in #480807.
6164
6165 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6168
6169         * dwarfwriter.c (emit_line_number_info): The line number info for
6170         IL code was off by one. Fix that.
6171
6172         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6173         stack.
6174
6175 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6176
6177         Contributed under the terms of the MIT/X11 license by Steven
6178         Munroe <munroesj@us.ibm.com>.
6179
6180         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6181         Fixes #483462.
6182
6183 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6186         as well.
6187
6188 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6189
6190         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6191         the delegate ctor handling code. Fixes #482638.
6192         
6193         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6194         #481458.
6195
6196         * iltests.il.in: Add a test.
6197         
6198         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6199         mini-posix.c.
6200
6201 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6202
6203         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6204         is shared generic code, return the trampoline, even if the method
6205         has already been compiled.  Fixes #479763.
6206
6207         * mini.c, mini.h: New function
6208         mono_jit_find_compiled_method_with_jit_info() which is the same as
6209         mono_jit_find_compiled_method() but also returns the jit info.
6210
6211 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6212
6213         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6214         for methods which actually have one.  For all other methods, make
6215         sure the this argument var is live the whole method.
6216
6217         * mini.c (mini_method_compile): Every shared method has a
6218         this/vtable/mrgctx info.  Fixes #480807.
6219
6220 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6221
6222         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6223         generic/imt thunks where some entries branch through the vtable,
6224         while other entries branch directly.
6225
6226 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6227
6228         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6229
6230         * mini-windows.c: Ditto.
6231         
6232         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6233         ctors.
6234
6235 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6236
6237         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6238         down an assert.
6239
6240 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6241
6242         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6243         #481403.
6244
6245 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6246
6247         * exceptions-x86.c: Include debug-mini.h - fixes build.
6248
6249 2009-03-04  Martin Baulig  <martin@ximian.com>
6250
6251         * debug-mini.c: Clean up the exception API and add documentation.
6252         (mono_debugger_handle_exception): New public method; this is
6253         called when throwing an exception or encountering an unhandled one.
6254         (mono_debugger_call_exception_handler): Formerly known as
6255         mono_debugger_handle_exception(); this is used to tell the
6256         debugger that we're about to invoke an exception handler.
6257
6258 2009-03-04  Martin Baulig  <martin@ximian.com>
6259
6260         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6261         ../metadata/mono-debug-debugger.c; save and reset exception state.
6262
6263 2009-03-02  Martin Baulig  <martin@ximian.com>
6264
6265         * debug-mini.c: Moved the debugger exception handling here from
6266         ../metadata/mono-debug-debugger.c.
6267
6268         * debug-mini.h
6269         (MonoDebuggerExceptionAction): New exception typedef.
6270
6271         * debug-mini.c
6272         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6273
6274         * exceptions-amd64.c
6275         (mono_amd64_throw_exception): Use the new debugger exception
6276         handling code.
6277
6278         * mini-exceptions.c
6279         (mono_handle_exception_internal): Don't call
6280         mono_debugger_unhandled_exception() here.
6281
6282 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * mini.c aot-compiler.c: Update after the changes to 
6285         mono_marshal_get_runtime_invoke ().
6286
6287         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6288         Virtual generic methods might not have method->slot set, work around
6289         that.
6290
6291         * generics.cs: Add a test.
6292
6293 2009-03-02  Geoff Norton  <gnorton@novell.com>
6294
6295         * mini.c:
6296         * driver.c: Allow signal chaining of SIGFPE as well.
6297
6298 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6299
6300         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6301         this since it now receives the method not its generic context in the
6302         IMT reg.
6303
6304         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6305         generic/imt thunks where some entries branch through the vtable, while
6306         other entries branch directly.
6307
6308         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6309
6310         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6311         support for interface methods as well.
6312
6313         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6314         using the normal IMT thunks.
6315
6316         generics.cs: Add new tests.
6317         
6318         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6319         the generic inst to the generic imt thunks. This fixes AOT support, 
6320         improves consistency with the normal IMT thunks, and makes it easier to
6321         add support for interface generic virtual methods later.
6322
6323         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6324         
6325 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * driver.c (mono_set_signal_chaining): New public API function to enable
6328         signal chaining on POSIX platforms.
6329
6330         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6331         (si@lindenlab.com) to implement signal chaining. The original patch was
6332         contributed under the MIT X/11 license:
6333         https://bugzilla.novell.com/show_bug.cgi?id=318894
6334
6335 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6336
6337         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6338         too until it can be made to run on amd64.
6339
6340 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6341
6342         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6343         to  get_generic_context_from_code () + get_call_info () if possible.
6344
6345 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6348         suspend-on-sigsegv functionality.
6349
6350         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6351         to suspend when a native SIGSEGV is received. This is useful for debugging
6352         crashes which don't happen under gdb, since a live process contains more
6353         information than a core file.
6354
6355         * mini-exceptions.c (mono_print_thread_dump): Use 
6356         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6357
6358         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6359
6360         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6361         
6362         * basic-float.cs: Disable the tests which currently fail on amd64.
6363
6364         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6365         value to mono_arch_patch_callsite () to fix crashes.
6366         
6367         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6368
6369 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6372         nop code by patching the call address to point to the nullified class init
6373         trampoline, as the former does not seem to be safe on SMP machines.
6374
6375 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6376
6377         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6378         they were wrong.
6379
6380 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6381
6382         * basic-float.cs basic-calls.cs: Fix warnings.
6383
6384 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6385
6386         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6387         correct frame pointer in the LMF.  Should fix #478394.
6388
6389 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6392
6393         * image-writer.c: Make the binary writer less verbose.
6394
6395 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6398         are called from runtime invoke wrappers.
6399
6400 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * cpu-ppc.md (store_memindex): Increase the size of this.
6403
6404 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6407
6408         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6409
6410         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6411         OP_LCONV_TO_R_UN.
6412
6413         Last fix for of #467201.
6414
6415
6416 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6417
6418         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6419
6420         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6421         and long_conv_to_r8_2:
6422
6423         Fixed part of #467201.
6424
6425 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6428
6429         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6430         conversion to 32 bits.
6431
6432         * cpu-x86.md: Increase the size of int_conv_to_r4.
6433
6434         * basic-float.cs: Add a test for this.
6435
6436         Fixed part of #467201.
6437
6438 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6439
6440         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6441
6442         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6443         conversion to 64 bits.
6444
6445         * basic-float.cs: Add a test for this.
6446
6447         Fixed part of #467201.
6448
6449 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6452
6453         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6454         This behavior is compatible with MS.
6455
6456         * iltest.il.in: Add a test for this.
6457
6458         Fixed part of #467201.
6459
6460 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6461
6462         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6463
6464         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6465         change the precision of the value.
6466
6467         * cpu-x86.md: Define len for float_conv_to_r4.
6468
6469         * basic-float.cs: Add a test for this.
6470
6471         Fixed part of #467201.
6472
6473 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6474
6475         * mini.c: Adjust locking order to the new semantics where the loader lock
6476         comes first.
6477
6478 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         * aot-runtime.c:
6481         * mini-amd64.c:
6482         * mini-arm.c:
6483         * mini-ia64.c:
6484         * mini-mips.c:
6485         * mini-ppc.c:
6486         * mini-sparc.c:
6487         * mini-trampolines.c:
6488         * mini-x86.c:
6489         * mini.c:
6490         * tramp-alpha.c:
6491         * tramp-amd64.c:
6492         * tramp-arm.c:
6493         * tramp-hppa.c:
6494         * tramp-ia64.c:
6495         * tramp-mips.c:
6496         * tramp-ppc.c:
6497         * tramp-s390.c:
6498         * tramp-s390x.c:
6499         * tramp-sparc.c:
6500         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6501
6502 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6503
6504         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6505         as it is incorrect.
6506
6507 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6508
6509         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6510         for cctors if needed.
6511
6512 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6513
6514         * mini-ppc.c: Fix build on Darwin.
6515
6516 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6517
6518         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6519         version instead of 3 as valgrind doesn't like version 3.
6520
6521         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6522
6523         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6524         usable for hashing methods.
6525         (emit_extra_methods): Use the new hash to avoid putting every method in the
6526         same hash bucket.
6527
6528         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6529
6530         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6531         whenever a method ref could match a method.
6532         
6533         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6534         test to fail.
6535         
6536         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6537         methods refs.
6538
6539         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6540
6541         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6542         the encoding buffer.
6543
6544         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6545         mono_method_get_header () on inflated methods as an optimization.
6546
6547 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * ssa.c (fold_ins): Fix another crash if the instruction following the
6550         switch was optimized away.
6551
6552 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6553
6554         Contributed under the terms of the MIT/X11 license by Steven
6555         Munroe <munroesj@us.ibm.com>.
6556
6557         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6558
6559 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6560
6561         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6562         around the mono_domain_alloc calls, it is now done by the functions
6563         themselves.
6564
6565         * aot-compiler.c (compile_method): Only add wrappers referenced by
6566         the method if compiling with full AOT.
6567         (mono_compile_assembly): Error out if --aot=full is specified on
6568         a platform where it is not supported.
6569
6570         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6571         on ARM too.
6572
6573         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6574         AOT support.
6575
6576         * aot-runtime.c (load_named_code): Handle 
6577         mono_arm_throw_exception_by_token.
6578
6579         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6580
6581         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6582         unaligned.
6583
6584         * Makefile.am (fullaotcheck): Exit if a test fails.
6585
6586         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6587         on ARM.
6588         (mono_compile_assembly): Handle the assembler failing.
6589
6590         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6591         accepting subsections of .bss.
6592
6593         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6594         was optimized away.
6595
6596         * aot-compiler.c: Remove some unused includes.
6597         
6598         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6599         now in MonoImageWriter.
6600
6601         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6602         code sequence which matches a non-virtual call. Fixes #472654.
6603
6604 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6605
6606         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6607         xdebug code.
6608         
6609         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6610         use the image/dwarf writers directly.
6611
6612         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6613         field.
6614
6615         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6616         MonoDwarfWriter.
6617
6618         * image-writer.h: Fix some typos.
6619
6620         * dwarfwriter.h dwarfwriter.c: New files.
6621         
6622         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6623         separate module.
6624
6625         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6626         argument to return unwind info.
6627
6628         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6629
6630         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6631         
6632         * aot-runtime.c (decode_method_ref): Add a case for 
6633         MONO_AOT_METHODREF_WRAPPER_NAME.
6634
6635         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6636         for AOT.
6637
6638         * aot-compiler.c (encode_method_ref): Use the new constants.
6639
6640         * aot-runtime.c (decode_method_ref): Ditto.
6641
6642         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6643         be compiled, not the icall itself.
6644
6645 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6648         using decode_method_ref ().
6649
6650         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6651         convert it to an in32. Fixes #475859.
6652
6653         * arrays.cs: Add a test.
6654
6655 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6658         OP_LCONV_TO_U2.
6659
6660         * basic-long.cs: Add a test.
6661
6662 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6663
6664         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6665         remove the frame pointer in leaf methods which don't receive any
6666         arguments, don't throw exceptions and don't do dynamic stack
6667         allocations.
6668
6669 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6670
6671         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6672         the fail_tramp changes. Hopefully fixes #475132.
6673
6674 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6675
6676         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6677         instead of mono_metadata_signature_dup_full.
6678
6679 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6682         for processing jump tables. Fixes #473787.
6683
6684 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6685
6686         * mini-generic-sharing.c: mini_method_get_context() just calls
6687         mono_method_get_context_general() now.
6688
6689         * mini.c, mini.h: Moved get_object_generic_inst(),
6690         construct_object_context_for_method() and
6691         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6692
6693 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6696         basic block fell through to its successor bblock without a branch. Fixes
6697         #474718.
6698
6699         * iltests.il.in: Add a test.
6700         
6701         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6702         (can_encode_patch): We can now handle arrays of generic parameters and
6703         array methods.
6704
6705         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6706
6707         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6708         the AOT file to avoid some #ifdefs in aot-runtime.c
6709
6710         * mini.h: Bump AOT file format version.
6711
6712 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * Makefile.am (fullaotcheck): Make this run the tests.
6715
6716         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6717
6718 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6719
6720         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6721         individually.  Fixes #473482.
6722
6723 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6724
6725         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6726
6727 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6728
6729         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6730         (mono_compile_assembly): Hush compile warnings about
6731         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6732         code path.
6733
6734 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6735
6736         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6737
6738         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6739
6740         * aot-compiler.c: Fix arm support.
6741
6742         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6743         img_writer_emit_unset_mode () function.
6744
6745         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6746         (mono_unwind_get_dwarf_pc_reg): Ditto.
6747
6748         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6749         Move almost all platform specific code to a set of arch_ functions, 
6750         and document them to ease porting.
6751         
6752         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6753
6754         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6755
6756         * aot-compiler.c: Extract the image writing functionality into a separate
6757         module to reduce the size of this file.
6758
6759 2009-02-09  Geoff Norton  <gnorton@novell.com>
6760
6761         * mini-s390.c: Fix the signature of emit_sig_cookie.
6762
6763 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6766
6767         * aot-runtime.c (is_shared_got_patch): Ditto.
6768
6769         * aot-runtime.c (load_named_code): Cope with the fact that 
6770         decode_got_entry () won't decode the patch fully if its corresponding got
6771         entry is already filled.
6772         
6773         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6774         Initialize *ji.
6775         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6776
6777         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6778         as the moving pointer instead of 'buf' for consistency with the rest of the
6779         codebase.
6780         (mono_arch_create_monitor_exit_trampoline): Ditto.
6781
6782         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6783         generic_class_init trampolines.
6784         (add_generic_class): Extract some code from add_generic_instances () into a
6785         separate function so it can be called from other places too.
6786         (compile_method): Call add_generic_class () for the classes of inflated methods
6787         referenced by the method.
6788         (can_encode_patch): Allow references to generic parameters.
6789
6790         * aot-runtime.c: Add support the patches required by the new trampolines.
6791         
6792         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6793         support.
6794
6795         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6796         full-aot support.
6797
6798         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6799         this from get_throw_pending_exception, make the signature full aot compatible.
6800
6801         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6802
6803         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6804
6805         * exceptions.cs: Add a test.
6806
6807 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6808
6809         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6810         use the DWARF_DATA_ALIGN constant instead.
6811
6812         * exception-<ARCH>.c: Update after the above change.
6813
6814         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6815         dwarf unwinder.
6816
6817         * mini-arm.c: Enable the dwarf unwinder.
6818
6819         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6820         instead of mono_class_setup_vtable ().
6821
6822 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6823
6824         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6825         dwarf unwinder.
6826
6827         * mini-x86.h: Enable the dwarf unwinder.
6828
6829 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6830
6831         Fix mcs/tests/test-7.cs
6832         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6833         2009-02-03.
6834
6835 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6836
6837         * mini.c (print_jit_stats): Remove some unused statistics.
6838
6839 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6840
6841         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6842
6843 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6844
6845         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6846         the method we get from mono_object_get_virtual_method() because
6847         that function does it properly, now.
6848
6849 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6850
6851         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6852         opcodes. Fixes #472775.
6853
6854 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6855
6856         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6857         fact that mono_find_jit_info() sometimes returns the context
6858         corresponding to the jit info in new_ctx.  Fixes #472600.
6859
6860 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6861
6862         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6863         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6864         klass->enum_basetype directly.
6865
6866         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6867         enum subtypes.
6868
6869         * unwind.c: Avoid 0 sized arrays.
6870
6871 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6874         size on systems with 64k pages. Fixes #471389.
6875
6876 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6877
6878         Contributed under the terms of the MIT/X11 license by Steven
6879         Munroe <munroesj@us.ibm.com>.
6880
6881         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6882         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6883         necessary.
6884
6885 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6886
6887         Contributed under the terms of the MIT/X11 license by Steven
6888         Munroe <munroesj@us.ibm.com>.
6889
6890         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6891         comparison fix.
6892
6893         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6894         The trampoline can be longer on PPC64.
6895
6896 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6897
6898         Contributed under the terms of the MIT/X11 license by Steven
6899         Munroe <munroesj@us.ibm.com>.
6900
6901         * mini-ppc.c: Compiler warning fixes and trivial code
6902         simplifications.
6903
6904 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6905
6906         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6907         ins->dreg which could be a hardware register, not a vreg.
6908
6909         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6910         
6911         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6912         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6913
6914         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6915         
6916         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6917         ->dreg, that is not the vreg we are looking for.
6918
6919         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6920
6921         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6922         LIVERANGE_END.
6923
6924         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6925         strange crashes.
6926
6927 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6928
6929         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6930
6931         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6932         the line diff is 0.
6933
6934         * aot-compiler.c: Add xdebug support on x86.
6935
6936         * unwind.c: Add x86 support.
6937         
6938         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6939         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6940
6941         * mini.c (mini_method_compile): Ditto.
6942         
6943         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6944         the variable index.
6945
6946         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6947         which mimic .push_section/.pop_section in GAS.
6948         
6949         * aot-compiler.c: Emit precise live range information for variables.
6950
6951         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6952
6953         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6954         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6955         them.
6956
6957         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6958         the live ranges of variables.
6959
6960         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6961         of the variable in terms of native offsets.
6962
6963 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6964
6965         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6966         
6967 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6968
6969         Contributed under the terms of the MIT/X11 license by Steven
6970         Munroe <munroesj@us.ibm.com>.
6971
6972         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6973         order (offset then base reg) for ppc_load_multiple_regs.
6974         (emit_save_saved_regs) Correct operand order for
6975         ppc_store_multiple_regs.
6976         (mono_arch_get_call_filter): Correct operand order for
6977         ppc_load_multiple_regs.
6978
6979         * mini-ppc.c (emit_memcpy): Fix operand order for
6980         ppc_load_reg_update and ppc_store_reg_update.
6981         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6982         (mono_arch_emit_epilog): Correct operand order for
6983         ppc_load_multiple_regs.
6984
6985         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6986         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6987
6988 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6989
6990         * cpu-ppc64.md: Fixed storer4_memindex length.
6991
6992 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6995         line number info.
6996         
6997         * aot-compiler.c (emit_line_number_info): Optimize this.
6998
6999 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
7000
7001         * aot-compiler.c: Disassemble tokens in the IL disassembly.
7002         
7003         * aot-compiler.c: Add debug info for methods without debug info by
7004         emitting an IL file and having the line number info referencing that file.
7005
7006         * aot-compiler.c: Optimize the size of the generated line number info.
7007
7008         * aot-compiler.c: Emit line number info in xdebug mode.
7009
7010         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
7011         million arguments.
7012
7013 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
7014
7015         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
7016
7017         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
7018         is used.
7019
7020 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7021
7022         * basic-calls.cs: Test for the weird crash found on arm.
7023         
7024 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
7025
7026         * cpu-arm.md: Increase the size of storer8_membase_reg and
7027         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7028
7029         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7030         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7031         reg to LR otherwise we'll be loading/storing from just the offset.
7032
7033 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7034
7035         Question: if we are storing gint32's inside the "*native_offset",
7036         should we change the signature to "gint32 *native_offset" to
7037         ensure that we do not have type definition problems?
7038         
7039         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7040         an int * as this is what the other function expects, causes
7041         problems with Freescale's compiler that defined int32_t to be a
7042         long and makes int incompatible 
7043
7044 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7045
7046         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7047         filename conflict with bjam.
7048
7049 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7050
7051         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7052         as it might use decomposed ops.
7053
7054 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7055
7056         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7057
7058         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7059         is defined.
7060
7061         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7062
7063         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7064         offsets.
7065
7066         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7067         way registers are stored in MonoContext on arm.
7068
7069         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7070         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7071
7072         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7073
7074         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7075
7076         * mini.c (mini_init): Register mono_isfinite.
7077
7078         * jit-icalls.c (mono_isfinite): New jit icall.
7079
7080         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7081         
7082         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7083         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7084         the parent frame.
7085
7086 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7087
7088         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7089         separate frame and stack pointers, so we must use FP to find the register
7090         spill area.
7091         The FP reg is retrieved from the MonoContext::regs array.
7092
7093 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7096         as FPA requires it.
7097
7098 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7099
7100         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7101         return R4 and R8 when not running under softfloat.
7102
7103         Fixes basic-calls.exe
7104
7105 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * mini-arm.c: Implement some overflow opcodes.
7108
7109 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7110
7111         * ssa.c: handle another alloca.h
7112
7113         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7114         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7115         MONO_ARCH_USE_SIGACTION. 
7116
7117         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7118         capability defines.
7119
7120         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7121
7122         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7123         PPC targets as sigaction does not exist on all platforms, define
7124         this on a per-platform basis.
7125
7126         Instead of erroring out if the platform is not defined, include
7127         mini-ppc-os.h, and expect that the OS specific setting provides
7128         the required information.   
7129
7130 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7131
7132         * aot-compiler.c: Fix --enable-minimal=aot.
7133
7134 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7135
7136         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7137         previous change.
7138
7139 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7140
7141         * exceptions-arm.c: Fix warnings.
7142
7143         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7144         ARM.
7145
7146         * mini-x86.c: Fix --enable-minimal=jit build.
7147
7148         * mini.c: Really fix --enable-minimal=jit build.
7149         
7150         * mini.c (construct_object_context_for_method): Move this outside
7151         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7152
7153         "Backported" of r124984 from 2.0 branch.
7154         
7155         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7156
7157         "Backport" of r124977 + r124978 from 2.0 branch.
7158         
7159         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7160         to avoid calling mono_exception_from_token () from the throw trampoline.
7161         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7162         for throwing corlib exceptions, this fixes full-aot support for corlib
7163         exceptions.
7164
7165         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7166
7167 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7168
7169         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7170         part of the changes to split the code in mini into operating
7171         system specific files.
7172
7173         This patch was done by copying mini.c to the respective files to
7174         preserve SVN history.
7175
7176 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7177
7178         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7179
7180 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7181
7182         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7183         remoting-invoke-with-check wrappers of shared methods.
7184
7185         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7186
7187 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7188
7189         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7190         optimization if the top of stack is the last instruction in the
7191         bblock.  Otherwise it might have been used after its definition.
7192         Fixes #469742.
7193
7194 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7197         method as well when get_vcall_slot () fails to match a code sequence.
7198
7199         * mini-arm.c: Fix the android build, which doesn't have
7200         __aeabi_read_tp.
7201
7202 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7203
7204         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7205         the s390x build.
7206
7207 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7210
7211 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7212
7213         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7214         and put its id into jinfo->used_regs. This is only used on amd64,
7215         which is currently the only platform generating unwind info.
7216
7217         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7218         the dwarf unwinder. This is required to correctly handle async exceptions
7219         like thread abort and stack overflows, which can happen while a method
7220         is in the middle of its prolog or epilog.
7221         
7222         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7223         the unwind info belonging to an AOTed method.
7224
7225         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7226         into cfg->unwind_ops.
7227         
7228         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7229
7230         * mini.c (mini_init): Call mono_unwind_init ().
7231         (mini_cleanup): Call mono_unwind_cleanup ().
7232
7233         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7234         unwind info to be shared between methods.
7235
7236         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7237         saved in the LMF.
7238
7239         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7240         get_throw_pending_exception () to avoid initialization races.
7241
7242         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7243         mono_arch_exceptions_init () function.
7244
7245         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7246
7247 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * mini.c (mono_get_domain_intrinsic): New helper function.
7250         (mono_get_thread_intrinsic): Ditto.
7251
7252         * mini-arm.c mini-ia64.c: Use the new helper functions.
7253         
7254         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7255         the last constrained_call change, since it is needed in the non-AOT
7256         case as well.
7257
7258         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7259         
7260         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7261         mono_get_lmf_addr () on arm eabi linux.
7262
7263 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7264
7265         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7266         code sequence which matches a non-virtual call.
7267
7268 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7269
7270         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7271         stack pointer (r1).
7272
7273 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7276         runtime-invoke wrappers, since they are also shared based on signature.
7277
7278 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7279
7280         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7281         info from the (correct) context.
7282
7283 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7284
7285         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7286         
7287         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7288         using dwarf unwinding info. Not yet used.
7289
7290         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7291
7292 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7293
7294         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7295         descriptors.
7296
7297         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7298         special case and handle mono_arch_delegate_invoke_impl() returning
7299         function descriptors.
7300
7301         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7302         trampolines return function descriptors, too.
7303
7304 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7307         out_of_line optimization.
7308
7309 2009-01-21  Martin Baulig  <martin@ximian.com>
7310
7311         * mini.h
7312         (MonoCompile): Added `disable_deadce_vars' to disable removing
7313         unused variables.
7314
7315         * mini.c
7316         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7317         inside the debugger.
7318
7319         * liveness.c (mono_analyze_liveness): Don't remove any unused
7320         variables if `cfg->disable_deadce_vars' is set.
7321
7322 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7323
7324         * method-to-ir.c: Only apply exception constructor optimization if
7325         the the method actually belongs to an exception class.  Fixes
7326         #467456.
7327
7328 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7331         change inside a #ifdef __mono_ppc64__.
7332
7333         * aot-compiler.c (compile_method): Remove the previous limitation.
7334
7335         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7336         on type variables in AOTed code.
7337         
7338         * aot-compiler.c (compile_method): Skip generic methods having type 
7339         constraints on their generic parameters.
7340
7341         * aot-compiler.c (compile_method): Check for methods which cannot be
7342         encoded inside RGCTX_FETCH patches as well.
7343
7344         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7345         build.
7346
7347 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7348
7349         * method-to-ir.c: Force the vtable variable in shared generic code
7350         for the case that they might show up on a stack trace where they
7351         are needed.
7352
7353         * mini-exceptions.c: Save and use generic sharing info as well as
7354         IP in stack traces to resolve shared generic instantiations.
7355
7356 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7359         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7360
7361 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7362
7363         * method-to-ir.c: Do generic sharing for array constructors.
7364
7365 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7366
7367         * mini-exceptions.c (mono_print_thread_dump): Add information
7368         about the thread state using wapi_current_thread_desc.
7369
7370 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7371
7372         * basic-simd.cs: Tests for the new constructors. 
7373
7374 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7375
7376         * mini-ops.h: Added OP_EXPAND_*
7377
7378         * cpu-x86.md: Same.
7379
7380         * mini-x86.c (mono_arch_output_basic_block): Same.
7381         
7382         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7383
7384 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * iltests.il.in: Add a test for #467385.
7387
7388 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7391         thread been cleaned up is not the same currently in execution.
7392
7393         Fixes appdomain-unload crashes on windows, osx and linux variants
7394         without the __thread keyword.
7395
7396 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7399         (koush@koushikdutta.com). Implement this for android.
7400
7401         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7402         begins with a digit.
7403
7404         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7405         mono_marshal_get_write_barrier ().
7406
7407 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7410         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7411         that pass them on a register pair.
7412
7413         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7414         test was crashing due to that.
7415
7416 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7417
7418         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7419         trampoline code. Include ucontext.h only if available.
7420
7421 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7422
7423         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7424         and doesn't check whether it's sharable, like it was before
7425         removing the shared generics hash.  This brings IronPython
7426         performance back to what it was before that change.
7427
7428 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7429
7430         * method-to-ir.c: Handle delegate invocation optimization earlier,
7431         otherwise it would be handled (much more slowly) by the
7432         final/sealed optimization.
7433
7434 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7437         domain is not set. Fixes #465864.
7438
7439 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7440
7441         * method-to-ir.c: Don't stop sharing of generic methods with catch
7442         clauses - we already handle those.
7443
7444 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7445
7446         * mini.c, mini.h: lookup_generic_method() is now
7447         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7448         making the shared_generics_hash obsolete.
7449
7450 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7451
7452         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7453         use the red zone.  Make room on the stack first and then use it,
7454         not the other way around.
7455
7456 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * mini.c (mini_init): Call mono_xdebug_init ().
7459
7460         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7461
7462 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7463
7464         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7465
7466         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7467         trampolines.
7468
7469         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7470         debug+unwind info for trampolines.
7471
7472         * mini.c (mono_create_unwind_op): New helper function.
7473
7474         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7475
7476 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * aot-compiler.c: Fix the build.
7479
7480 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * Makefile.am: Update dtrace-prelink.sh location.
7483
7484 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7485
7486         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7487         optimization. Fixes #464520.
7488
7489 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7490
7491         * mini-amd64.c : Adding code to save/restore non-volatile registers
7492            on Winx64.
7493
7494         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7495           registers on Winx64.
7496
7497         Contributed under MIT/X11 license.
7498
7499 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7502         __GNUC_MINOR__ which can break when the major version changes.
7503
7504 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7507
7508 2009-01-07  Geoff Norton  <gnorton@novell.com>
7509
7510         * helpers.c:  Allow mono -v -v -v to work on darwin.
7511
7512 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7513
7514         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7515           pattern. 
7516
7517         Contributed under MIT/X11 license.
7518
7519 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7520
7521         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7522         instead of directly accessing type->data.klass. Fixes #462016.
7523         (mono_allocate_stack_slots_full): Ditto.
7524
7525         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7526         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7527
7528         * aot-compiler.c (emit_plt): Fix ARM build.
7529
7530 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7531
7532         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7533         
7534         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7535         change.
7536
7537         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7538         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7539         #463357.
7540
7541         * iltests.il.in: Add a regression test.
7542
7543 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7544
7545         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7546
7547 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7548
7549         * basic-simd.cs: Add a regression test for #462457.
7550
7551 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7552
7553         * mini-ops.h: Add a definition of XPHI.
7554
7555         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7556
7557         * ssa.c (op_phi_to_move): Handle XPHI.
7558
7559         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7560
7561         Fixes #462457
7562
7563 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7566
7567 2008-12-31  Geoff Norton  <gnorton@novell.com>
7568
7569         * mini-ppc.c: The prolog size allocated can be too small for darwin
7570         ppc32 under certain circumstances.  Also fix a small logic bug.
7571
7572 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7575         while loading AOT methods.
7576
7577         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7578         since only the former is nulled out after a successful cast. This prevents
7579         crashes with rethrown exceptions when using --debug=casts.
7580
7581 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7582
7583         * mini.h: New macro for checking whether a method is final,
7584         i.e. whether the method or its class is marked final.
7585
7586         * method-to-ir.c: Use the new macro for all final-checks
7587         consistently.  Fixes the crash in the System.ServiceModel tests.
7588
7589 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7590
7591         * mini-exceptions.c (get_exception_catch_class): Corrected another
7592         overly strict assertion.
7593
7594 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7595
7596         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7597         Clobbering it is not allowed because the caller might use it as
7598         the vtable register in the interface call.
7599
7600 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7601
7602         * mini-exceptions.c (get_exception_catch_class): Corrected an
7603         overly strict assertion.
7604
7605 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7606         
7607         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7608
7609         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7610
7611         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7612
7613         * cpu-mips.md: correct lengths for certain long_ opcodes.
7614
7615         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7616
7617         * 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().
7618         
7619 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7620
7621         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7622         
7623 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7624         
7625         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7626         
7627 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7628
7629         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7630         next basic block.
7631         
7632 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7633
7634         * 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
7635
7636         * 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)
7637         
7638 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7639         
7640         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7641         
7642 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7643
7644         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7645         gshared code. Fixes #458947.
7646
7647         * generics.cs: Add a test.
7648
7649 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7650         
7651         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7652         
7653         * mini-mips.c: first pass n32 code generation.
7654
7655         * mini-mips.h: datatypes and defines for n32 support.
7656
7657         * exceptions-mips.c: first pass n32 code generation.
7658         
7659         * tramp-mips.c: first pass n32 code generation.
7660         
7661         * cpu-mips.md: add long_ opcodes.
7662         
7663 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7664
7665         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7666
7667         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7668         
7669         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7670         
7671         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7672
7673         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7674
7675         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7676
7677         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7678
7679         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7680
7681         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7682
7683 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7684
7685         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7686
7687 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7688
7689         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7690
7691 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7692
7693         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7694         descriptors for helper functions directly in front of the code.
7695
7696 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7697
7698         * method-to-ir.c: Removed an unnecessary assertion.
7699
7700 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7701
7702         * method-to-ir.c: Merge SGEN changes from the old JIT.
7703
7704 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * driver.c (compile_all_methods_thread_main): Handle failure of
7707         mono_get_method ().
7708
7709 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7710
7711         * mini-ppc.c: Merged with mini-ppc64.c.
7712
7713         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7714
7715         * Makefile.am: Use the same sources for PPC and PPC64.
7716
7717         * mini-ppc64.c: Removed.
7718
7719 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7720
7721         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7722         code to mono_bb_is_fall_through.
7723         
7724         * branch-opts.c (mono_remove_critical_edges): Same.
7725
7726 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7727
7728         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7729         expect that an OP_BR_REG will be there.
7730
7731 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7732
7733         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7734         for the many branch ops. The original check miss OP_BR_REG.
7735
7736         Fixes #457574.
7737         
7738 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7739
7740         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7741
7742 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7745         while holding the aot lock.
7746
7747 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7748
7749         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7750         
7751 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7752
7753         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7754           to release all runtime callable wrappers held by the runtime.
7755
7756         Contributed under MIT/X11 license.
7757
7758 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7759
7760         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7761           for Winx64.
7762
7763         Contributed under MIT/X11 license.
7764
7765 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7766
7767         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7768         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7769
7770 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7771
7772         * cpu-mips.md: fix ckfinite length
7773
7774         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7775         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7776         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7777         
7778 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7779
7780         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7781         
7782 2008-12-08  Geoff Norton  <gnorton@novell.com>
7783
7784         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7785         size by 8 bytes as well.
7786
7787 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * basic-simd.cs: Fix method names for Vector16b.
7790         
7791 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * basic-simd.cs: Fix method names for Vector16sb.
7794
7795 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7796
7797         * basic-simd.cs: Fix method names for Vector8us.
7798         
7799 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * basic-simd.cs: Fix method names for Vector8s.
7802         
7803 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * basic-simd.cs: Fix method names for Vector4ui.
7806
7807 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7808
7809         * basic-simd.cs: Fix method names for Vector2l.
7810
7811 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7812
7813         * basic-simd.cs: Fix method names for Vector2d.
7814
7815 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7816
7817         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7818         that are extension methods.
7819
7820 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7821
7822         * basic-simd.cs: Fix method names for Vector4f.
7823
7824 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7825
7826         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7827         as such. Fixes #456669.
7828
7829 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7830
7831         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7832         
7833 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7834
7835         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7836         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7837         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7838         (mips_adjust_stackframe): handle FP spills
7839                 
7840         * mini-ops.h: add mips_mtc1_s2
7841         
7842         * cpu-mips.md: add mips_mtc1_s2
7843         
7844 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * unwind.c: New file, move the unwind info encoding functions here from
7847         aot-compiler.c, so they could be used at runtime too.
7848
7849 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7850
7851         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7852         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7853         
7854 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7855
7856         * mini-mips.c: cleanup warnings
7857         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7858         (mips_adjust_stackframe): handle case of taking the address of stack locals
7859         
7860 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7861
7862         * aot-compiler.c: Implement a few functions missing from the asm writer.
7863         (emit_method_code): Only write symbols for methods when using the bin
7864         writer, since the assembler can't deal with the characters in our method
7865         names.
7866
7867         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7868
7869         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7870         call.
7871
7872         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7873         a bit to also restore %rax.
7874
7875 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7876
7877         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7878
7879 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7882         arguments.
7883
7884 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7885
7886         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7887
7888         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7889         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7890
7891         * exceptions-ppc64.c: Removed.
7892
7893         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7894
7895 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7896
7897         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7898         tramp-ppc64.c.
7899
7900         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7901
7902         * tramp-ppc64.c: Removed.
7903
7904 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7905
7906         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7907         the TYPESPEC table.
7908
7909 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7910
7911         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7912
7913         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7914         mini-ppc.h instead of mini-ppc64.h.
7915
7916         * mini-ppc64.h: Removed.
7917
7918 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7919
7920         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7921         
7922         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7923         
7924 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7925
7926         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7927         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7928         code easier.
7929
7930 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7931
7932         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7933
7934 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7935
7936         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7937
7938 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * basic-simd.cs: Tests for operator == and != on Vector4f.
7941
7942 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7945
7946         * simd-intrinsics.c: Kill useless enum.
7947
7948 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7949
7950         * cpu-mips.md: add long_conv_to_ovf_i4_2
7951         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7952
7953 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7954
7955         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7956         
7957         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7958
7959 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7960
7961         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7962         
7963 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * basic-simd.cs: Add tests for new methods.
7966
7967 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7968
7969         * simd-intrinsics.c: Add support for operator == and !=
7970         on Vector4(u)i.
7971
7972         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7973
7974 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7975
7976         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7977
7978 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7981
7982         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7983         MONO_PATCH_INFO_ICALL_ADDR.
7984
7985         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7986
7987         * aot-compiler.c: Resurrect full-aot support.
7988
7989 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7990
7991         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7992         
7993 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7994
7995         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7996         
7997 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7998
7999         * basic-simd.cs: Fix tests to work under ppc.
8000         Remove tests for methods that will be removed.
8001
8002 2008-12-03  Mark Probst  <mark.probst@gmail.com>
8003
8004         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
8005         generic type (via a typedef or typeref) correctly.
8006
8007 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8008
8009         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
8010         diagnose an assertion failure.
8011
8012 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8013
8014         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
8015         Fix trampoline size.
8016
8017         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
8018         conversion opcodes are implemented natively instead via emulation.
8019
8020 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8021
8022         * cpu-mips.md: remove mips_xori
8023
8024         * mini-ops.h:  remove mips_xori
8025
8026         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
8027
8028         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8029         
8030         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8031         
8032 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8033
8034         * cpu-mips.md: fix instruction lengths.
8035
8036         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8037
8038         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8039
8040         * mini-ops.h: fix slti / sltiu op profiles.
8041         
8042 2008-12-02  Martin Baulig  <martin@ximian.com>
8043
8044         * method-to-ir.c (mono_method_to_ir): Disable debugging
8045         information for the init locals block to make the debugger stop
8046         after all locals have been initalized.
8047
8048 2008-12-02  Martin Baulig  <martin@ximian.com>
8049
8050         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8051         running inside the debugger.
8052
8053 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8054
8055         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8056         is enabled.
8057
8058         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8059         alu->alu imm optimization which only shows if deadce is disabled.
8060
8061         * aot-compiler.c: Rename the function names for the binary and asm writers
8062         so they can coexist in the same process. Rework the xdebug code to use the
8063         asm writer. This avoids the need to call into the runtime to dump the
8064         debugging info. Add more debugging info for types.
8065
8066         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8067
8068         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8069         cpu description tables, they can't occur in cpu-<ARCH>.md.
8070
8071         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8072         the stack in CEE_LDFLDA. Fixes #450542.
8073
8074         * generics.cs: Add a new test.
8075
8076 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8077
8078         * mini-ops.h: updated MIPS opcodes
8079         * mini-mips.c: decompose long opts
8080         * mini-mips.h: decompose long opts
8081         
8082 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8083
8084         * cpu-mips.md: fix length on int_rem_un
8085         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8086         
8087 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8090
8091         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8092
8093 2008-11-29  Martin Baulig  <martin@ximian.com>
8094
8095         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8096         mono_debug_using_mono_debugger() in addition to the
8097         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8098
8099 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8100
8101         * mini-ops.h: updated more MIPS opcodes
8102         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8103         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8104         
8105 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8106
8107         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8108
8109 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8110
8111         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8112         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8113         * mini-ops.h: correct selected mips opcode entries
8114         
8115 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8116
8117         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8118         make them work.
8119
8120 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8121
8122         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8123
8124 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8125
8126         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8127         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8128         * mini-mips.h: disable IMT
8129         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8130         
8131 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8132
8133         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8134
8135 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8136
8137         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8138
8139 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8140
8141         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8142         consistency.
8143
8144 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8145
8146         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8147         for Set/GetVector aligned versions.
8148
8149 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8150
8151         * basic-simd.cs: Add tests for Get/SetVector.
8152
8153 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8154
8155         * mini.c: Removed g_slist_append_mempool().  Now in
8156         metadata/mempool.c.
8157
8158 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8159
8160         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8161         size properly and make the bounds check optional.
8162
8163         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8164         for SetVector and IsAligned.
8165
8166 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * mini.c: Remove unused mono_normalize_opcodes () function.
8169
8170 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8171
8172         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8173         using the new atomic add ops now.
8174
8175         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8176         add.
8177
8178 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8179
8180         * mini-ppc64.c: Several fixes.
8181
8182 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8183
8184         * cpu-mips.md: added jump_table
8185         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8186
8187 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8188
8189         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8190
8191 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8192
8193         * mini-ops.h: corrected a handful of MIPS opcodes.
8194
8195 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8196
8197         * aot-compiler.c: MIPS to use ELF writer
8198
8199 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8200
8201         * mini-codegen.c: remove MIPS specific assert.
8202
8203 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8204
8205         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8206         fixes.  PPC64 now passes most of the runtime regressions.
8207
8208 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8209
8210         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8211         volatile intervals a bit.
8212
8213 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8214
8215         * basic-long.cs: New test case.
8216
8217 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * mini.c (mini_method_compile): Disable globalra for large methods for 
8220         now.
8221
8222         * regalloc2.c (order_moves): Add fp support.
8223
8224         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8225         source bblock ends with an OP_BR_REG.
8226
8227         * ratests.cs: Add a new test.
8228
8229 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8230
8231         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8232         sharing.  PPC64 now passes generics.exe.
8233
8234 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8235
8236         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8237
8238 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8241         memory when mono_jit_info_table_find () can't find the method in the
8242         LMF case.
8243
8244         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8245         AOTed code too.
8246         
8247         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8248         writer too.
8249
8250 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8251
8252         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8253         Several fixes.  PPC64 now runs exceptions.exe and
8254         devirtualization.exe.
8255
8256 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8257
8258         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8259         arrays.exe and basic-math.exe.
8260
8261 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8262
8263         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8264         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8265
8266 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8267
8268         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8269
8270 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8271
8272         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8273
8274         * ir-emit.h: Move macros from method-to-ir.c to here.
8275
8276 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * mini-ops.h: Correct the long simd ops to use LREG.
8279
8280 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8283         
8284         * mini-ops.h: Correct the dreg type of a few long opcodes.
8285
8286         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8287         Add netbsd support.
8288
8289 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8290
8291         * mini-ppc.c: remove negative stack references in epilog
8292         for platforms that don't support the red zone.
8293
8294 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8295
8296         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8297         point regs.  Now PPC64 passes basic-calls.exe.
8298
8299 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8300
8301         * basic-simd.cs: Add tests for accessors of Vector2l.
8302
8303 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8304
8305         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8306
8307         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8308         
8309         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8310
8311 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8312
8313         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8314         PPC64 passes basic-long.exe.
8315
8316 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8317
8318         * decompose.c: Decompose carry and overflow add on PPC64 like on
8319         other 64 bit archs.  Don't decompose sub at all on PPC64.
8320
8321         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8322         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8323         basic-long.exe.
8324
8325 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8326
8327         * basic-simd.cs: Add tests for accessors of Vector2d.
8328
8329 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8330
8331         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8332
8333         * cpu-x86.md: Same.
8334
8335         * mini-x86.c (mono_arch_output_basic_block): Same.
8336         
8337         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8338
8339 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8340
8341         * basic-simd.cs: Add tests for accessors of Vector4f.
8342
8343 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8344
8345         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8346
8347         * cpu-x86.md: Same.
8348
8349         * mini-x86.c (mono_arch_output_basic_block): Same.
8350         
8351         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8352
8353 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8354
8355         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8356
8357 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8358
8359         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8360
8361         * cpu-x86.md: Same.
8362
8363         * mini-x86.c (mono_arch_output_basic_block): Same.
8364         
8365         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8366
8367 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8368
8369         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8370
8371 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8372
8373         * simd-intrinsics.c: Enable setters for Vector16sb.
8374
8375 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8376
8377         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8378
8379         * cpu-x86.md: Same.
8380
8381         * mini-x86.c (mono_arch_output_basic_block): Same.
8382         
8383         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8384
8385 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8386
8387         * simd-intrinsics.c: Implement setter for Vector8us.
8388
8389 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8392         for dead variables.
8393
8394 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8395
8396         * mini-ppc.c: remove references to the red zone in the prolog
8397         (for systems that don't support it).
8398
8399 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8400
8401         * cpu-ppc64.md: Fixed a few instruction lengths.
8402
8403         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8404         now.
8405
8406 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8407
8408         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8409         basic.exe now.
8410
8411 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8412
8413         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8414
8415 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8416
8417         * mini-ops.h: Added OP_INSERT_I2.
8418
8419         * cpu-x86.md: Same.
8420
8421         * mini-x86.c (mono_arch_output_basic_block): Same.
8422         
8423         * simd-intrinsics.c: Implement setter for Vector8s.
8424
8425         * simd-methods.h: Add the names of get setters of Vector8s.
8426
8427 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8430         
8431         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8432         parameters.
8433
8434         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8435
8436 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8437
8438         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8439         for PPC64.  An empty program runs now.
8440
8441 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8444
8445         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8446         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8447         info for JITted code is emitted into a shared library, loadable into gdb.
8448
8449 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8450
8451         * Makefile.am: Changes to build PPC64.
8452
8453         * mini-arch.h: Include mini-ppc64.h on PPC64.
8454
8455 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8456
8457         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8458         in PPC code up to r119147.
8459
8460 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8461
8462         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8463         cpu-ppc64.md: Changes for PPC64.
8464
8465         Based on code submitted by andreas.faerber@web.de at
8466         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8467         X11/MIT license.
8468
8469 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8470
8471         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8472         cpu-ppc64.md: Copied from the corresponding PPC files from
8473         r118846.
8474
8475 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8476
8477         * mini-ops.h: Added OP_ROUND.
8478
8479         * cpu-x86.md: Added round.
8480
8481         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8482
8483         * basic-math.cs: Added test_0_round to test rounding.
8484
8485         Contributed under MIT/X11 license.
8486
8487 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8488
8489         * aot-compiler.c : Fix the Winx64 build.
8490
8491         Contributed under MIT/X11 license.
8492
8493 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8494
8495         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8496         in OP_EXTRACT_R8 to avoid possible stack corruption.
8497
8498 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8499
8500         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8501
8502         * cpu-x86.md: Added extract_r8.
8503
8504         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8505         
8506         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8507         a couple of OP_EXTRACT_I4.
8508
8509         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8510
8511         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8512
8513 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8514
8515         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8516         and not 4.1. 
8517
8518 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8519
8520         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8521         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8522
8523         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8524         are not needed any more.
8525
8526         * mini.h: Remove the unused INS_LIST macros.
8527
8528         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8529         longer needed.
8530
8531         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8532         ir-emit.h.
8533
8534         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8535         mono_alloc_ireg () instead.
8536
8537         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8538         macros.
8539
8540         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8541         on amd64.
8542
8543         * aot-runtime.c (load_aot_module): Disable AOT when running under
8544         CAS.
8545
8546         * mini-amd64.h: Change the monitor fastpath defines to check for
8547         !PLATFORM_WIN32 so they work on *bsd too.
8548
8549         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8550
8551         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8552
8553         * mini.h (MonoCompile): Remove new_ir flag.
8554
8555         * regalloc.h regalloc.c: Remove unused code.
8556
8557         * cpu-*.md: Remove more unused opcodes.
8558
8559         * simple-cee-ops.h simple-mini-ops.h: Removed.
8560
8561         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8562         
8563 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8564
8565         * aliasing.h: Removed.
8566
8567         * *.c: Remove references to aliasing.h and inssel.h.
8568
8569         * mini.c: Remove additional unused functions.
8570
8571         * mini-ops.h cpu-*.md: Remove unused opcodes.
8572
8573 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8574
8575         Remove the old JIT code.
8576
8577         * inssel*.brg: Removed.
8578
8579         * ssa.c abcremoval.c aliasing.c: Removed.
8580
8581         * ssa2.c: Renamed to ssa.c.
8582
8583         * abcremoval2.c: Renamed to abcremoval.c.
8584
8585         * *.c: Removed all !cfg->new_ir code.
8586
8587         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8588         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8589
8590         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8591         
8592 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8595         to simplify the code and cut back on the number of global symbols in the AOT
8596         file.
8597         
8598         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8599
8600 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8601
8602         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8603         with the got/got_info tables.
8604
8605         * mini.h: Bump AOT file format version.
8606         
8607         * unwind.h: New file, contains definitions for stack unwinding.
8608
8609         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8610         to cfg->unwind_ops.
8611         
8612         * aot-compiler.c: Generalize the emitting of unwind information to use the
8613         information in cfg->unwind_ops.
8614
8615         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8616
8617         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8618         AOT method frames. Enable writing symbols for methods by default.
8619
8620 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8621
8622         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8623         and make it work with vectors of element sizes 1, 2 and 4.
8624
8625         * simd-intrinsics.c: Enable getter for all vectors with element size
8626         1, 2 or 4.
8627
8628         * simd-methods.h: Add the names of other getters.
8629
8630         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8631
8632         * cpu-x86.md: Same.
8633
8634         * mini-x86.c: Same.
8635
8636 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8637
8638         * mini-ppc.h: portability fix.
8639
8640 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8641
8642         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8643         buggy and will overwrite it.
8644
8645 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8646
8647         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8648         Use it to emit local symbols for all methods so AOTed methods show up with
8649         their full name in gdb/valgrind output.
8650
8651 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8652
8653         * mini-ppc.c: portability fixes.
8654
8655 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8658         entries out of the if (!generic_shared...) code so it is always done.
8659         (mono_class_init_trampoline): Do the patching when running under valgrind
8660         too, newer versions of valgrind have no problems with it.
8661
8662 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8663
8664         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8665         further sections.
8666
8667 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8668
8669         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8670         filters.
8671
8672 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8673
8674         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8675
8676 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8677
8678         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8679
8680         * cpu-x86.md: Same.
8681
8682         * mini-x86.c: Same.
8683
8684         * simd-intrinsics.c: Same.
8685
8686 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8687
8688         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8689
8690 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8691
8692         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8693         to work with more Vector types.
8694
8695 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8696
8697         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8698         store the elemens directly instead of using and intermediate.
8699
8700 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8701
8702         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8703
8704         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8705         to preserve %eax for aot plt trampolines.
8706
8707         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8708         (encode_method_ref): Flag synchronized methods so they won't go through
8709         the AOT trampoline.
8710
8711         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8712         wrappers.
8713
8714         * cpu-ia64.md (jmp): Increase max length.
8715
8716 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8717
8718         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8719         open generic classes.
8720
8721         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8722
8723         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8724         box+brtrue optimization since it causes test failures on x86.
8725
8726 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8727
8728         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8729
8730         * cpu-x86.md: Same.
8731
8732         * mini-x86.c: Same.
8733
8734         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8735         for simd ctor values. 
8736
8737         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8738         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8739
8740 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8741
8742         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8743         LogicalRightShift.
8744
8745         * simd-instrincs.c: Same.
8746
8747         * basic-simd.cs: Same.
8748
8749 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * ratests.cs: Add more tests.
8752
8753         * regalloc2.c (add_spill_code): Handle more corner cases.
8754
8755 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8756
8757         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8758         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8759         both the source an destination of an instruction.
8760
8761 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8762
8763         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8764         wapihandles.c: more portability changes.
8765
8766 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8767
8768         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8769         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8770         safe to execute in a signal handler and the kernel provides better
8771         the info in /proc/self/smaps. Avoid the assert on sigaction during
8772         cleanup.
8773
8774 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8777         do the bblock linking hack if it is actually needed.
8778
8779         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8780         up linking.
8781
8782         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8783         crash problem is fixed.
8784
8785         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8786         bblocks.
8787
8788         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8789         for catch clauses.
8790         (mini_method_compile): Set the starting value of next_vreg to 
8791         MAX_IREGS + MAX_FREGS when using globalra.
8792
8793         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8794         filter clauses with BB_EXCEPTION_HANDLER.
8795
8796         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8797
8798 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8799
8800         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8801         space for stdcall.  Fixes regressions on Win32.
8802
8803 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8804
8805         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8806         bblocks.
8807         (linear_scan): Remove an assert which doesn't seem to be needed.
8808
8809         * local-propagation.c (mono_local_deadce): Avoid a call to
8810         MONO_DELETE_INS which would screw up the instruction linking.
8811
8812         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8813
8814         * regalloc2.c: Upgrade to work the current JIT code.
8815
8816 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8817
8818         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8819         case.
8820
8821         * aot-runtime.c: Remove some dead code.
8822
8823         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8824         consistency.
8825         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8826
8827         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8828         trampolines using sscanf since atoi doesn't work on large unsigned values.
8829
8830         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8831         Initialize code_size.
8832
8833 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8834
8835         * method-to-ir.c (mini_emit_inst_for_method): Make
8836         Interlocked.CompareExchange work for Int arguments on 32 bit
8837         archs, as well.
8838
8839 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8840
8841         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8842
8843 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8844
8845         * main.c Fix MSVC build.
8846
8847         Contributed under MIT/X11 license.
8848
8849 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8850
8851         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8852         alignment larger than 8 bytes are aligned correctly, too.
8853
8854         * mini.c: Honor the min_align field of MonoClass when laying out
8855         the stack.
8856
8857 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8858
8859         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8860
8861         * aot-compiler.c (emit_plt): Fix a warning.
8862         
8863         * aot-compiler.c: Implement ARM support in the binary writer.
8864
8865 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * basic-simd.cs: Add test for getter with byref arg.
8868         Fix the naming of a few tests.
8869         Add missing checks to a test.
8870
8871 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8872
8873         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8874
8875         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8876         most of the full-aot support for monitor enter/exit trampolines.
8877
8878         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8879         enter/exit trampoline creation functions.
8880
8881         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8882         make dist.
8883
8884 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8885
8886         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8887         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8888         implement the needed functionality without adding crap to the runtime.
8889
8890 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8891
8892         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8893         non-x86 builds.
8894
8895         * mini.c (mono_build_date): New global version holding the build date in
8896         string format.
8897         
8898         * Makefile.am (buildver.c): Generate a file containing the build date.
8899
8900         * main.c: Set the build date from the generated file.
8901
8902         * mini.c (mono_get_runtime_build_info): New helper function returning build
8903         information in a string format.
8904         
8905         * driver.c (mono_main): Print the build date in --version.
8906
8907         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8908         file when the bind-to-runtime-version option is used.
8909
8910 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8911
8912         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8913
8914 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8915
8916         * simd-methods.h: Rename prefetch methods.
8917
8918         * simd-intrinsics.c: Same.      
8919
8920 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8921
8922         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8923         sizes.
8924
8925 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8926
8927         * aot-compiler.c: Use the bundled elf header files instead of depending on
8928         the system one.
8929         
8930         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8931         mempool.
8932
8933         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8934         on every call.
8935
8936 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8937
8938         * cpu-x86.md: Add store nta ops.
8939
8940         * mini-ops.h: Same.
8941
8942         * mini-x86.c: Same.
8943
8944         * mini.h: Add an enum for simd prefetch modes.
8945
8946         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8947         of store. Use the changed code to support store nta.
8948
8949         * simd-intrinsics.c: Add prefetch ops for all vector types.
8950
8951 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8952
8953         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8954         threads.
8955         
8956         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8957         names.
8958
8959         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8960         trampolines.
8961
8962 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8963
8964         * mini-x86.c: Fixed commit.
8965
8966 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8969
8970 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8971
8972         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8973         and MONITOR_EXIT, for the ASM fastpaths.
8974
8975         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8976         available.
8977
8978         * mini.c, patch-info.h: Signature and patch infos for
8979         Monitor.Enter/Exit trampolines.
8980
8981         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8982
8983         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8984         Monitor.Enter/Exit ASM fastpath for Linux.
8985
8986 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8989
8990         * objects.cs: Add a new test.
8991         
8992         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8993
8994         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8995         if MONO_LOG_LEVEL is set.
8996
8997         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8998
8999         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
9000
9001         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
9002         
9003         * aot-compiler.c: Change the relocation code to use virtual addresses instead
9004         of file offsets. Align the sections belonging to the data segment to 
9005         PAGESIZE.
9006
9007 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
9010         elf.h. Port it to amd64.
9011
9012 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9013
9014         * driver.c: Enable SIMD by default.
9015
9016 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
9017
9018         * cpu-x86.md: Add prefetch op.
9019
9020         * mini-ops.h: Same.
9021
9022         * mini-x86.c: Same.
9023
9024         * mini.h: Add an enum for simd prefetch modes.
9025
9026         * simd-methods.h: Add prefetch function names.
9027
9028         * simd-intrinsics.c: Add prefetch ops for all vector types.
9029
9030 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9031
9032         * aot-compiler.c (emit_bytes): Speed this up a little.
9033
9034 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9035
9036         * aot-compiler.c: Add JIT time etc. statistics.
9037         
9038         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9039
9040         * mini.h (MonoCompile): Add 'got_offset' field.
9041
9042         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9043         method_got_offsets array.
9044
9045         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9046         wrappers.
9047
9048         * aot-compiler.c (compile_method): Add generic method instances referenced
9049         by the method to the list of methods to be compiled, this is required so if
9050         A<T> references B<T>, and another assembly references A<int>, then it will
9051         also get a copy of B<int>.
9052
9053         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9054         when checking for monitor enter/exit.
9055
9056 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9057
9058         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9059         for Monitor.Enter and Monitor.Exit if enabled.
9060
9061         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9062         Solaris.
9063
9064 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9067         of an OP_MOVE. Fixes #440046.
9068
9069         * basic-long.cs: Add a new test.
9070
9071 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9072
9073         * mini.h: Add synchronization note for the managed counter-part.
9074
9075         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9076         returns the simd caps of the current cpu.
9077
9078 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9079
9080         * basic-simd.cs: Remove Console.WriteLine.
9081
9082 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9083
9084         * basic-simd.cs: New tests for Vector2ul.
9085
9086 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9087
9088         * simd-intrinsics.c: Add new vector type Vector2ul.
9089
9090 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * basic-simd.cs: New tests for Vector2l.
9093
9094 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9095
9096         * cpu-x86.md: Add long version of most packed int ops.
9097
9098         * mini-ops.h: Same.
9099
9100         * mini-x86.h: Same.
9101
9102         * simd-intrinsics.c: Add new vector type Vector2l.
9103
9104 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9107
9108         * simd-methods.h: Remove SN_op_BitwiseXor.
9109
9110 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9113         alignment.
9114
9115 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * basic-simd.cs: Test for Vector2d.
9118
9119         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9120         value.
9121
9122 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9123
9124         * cpu-x86.md: Add double version of all packed float ops.
9125
9126         * mini-ops.h: Same.
9127
9128         * mini-x86.h: Same.
9129
9130         * simd-intrinsics.c: Add new vector type Vector2d.
9131
9132         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9133
9134         * simd-methods.h: Add Duplicate.
9135
9136 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * basic-simd.cs: Test for packing with signed saturation.
9139
9140 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9141
9142         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9143         found in the TYPESPEC table.
9144
9145 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9146
9147         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9148         too.
9149
9150         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9151
9152         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9153         instead of the RVA, since the RVA can be changed by tools like the cil 
9154         stripper.
9155
9156         * method-to-ir.c (mono_method_to_ir2): Ditto.
9157
9158         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9159         (deserialize_variable): Ditto.
9160
9161 2008-10-25  Martin Baulig  <martin@ximian.com>
9162
9163         * debug-mini.c (write_variable): Use
9164         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9165
9166 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9167
9168         * cpu-x86.md: Add unsigned variants of packd and packw.
9169
9170         * mini-ops.h: Same.
9171
9172         * mini-x86.h: Emit the right instruction for packd and packw.
9173         Add unsigned variants of packd and packw.
9174
9175         * simd-intrinsics.c: Packd and packw were used in place of their
9176         unsigned variants. Change that.
9177         Add intrinsics for (Signed)PackWithSignedSaturation.
9178
9179         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9180
9181 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9184
9185 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9188
9189         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9190
9191         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9192         sse instructions.
9193
9194         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9195
9196 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9197
9198         * method-to-ir.c, mini.c: Special casing for the synchronized
9199         wrapper for the ldtoken+GetTypeFromHandle case.
9200
9201 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9204
9205         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9206         created/split bblocks.
9207
9208 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9209
9210         * mini-ops.h: Add packed signed mul high.
9211         
9212         * cpu-x86.md: Same.
9213
9214         * mini-x86.c (mono_arch_output_basic_block): Same.
9215
9216         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9217
9218         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9219
9220 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9221
9222         * basic-simd.cs: Tests for Vector16sb.
9223
9224 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9227
9228 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * mini-ops.h: Add packed signed min, max and compare greater.
9231         
9232         * cpu-x86.md: Same.
9233
9234         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9235         saturation.
9236
9237         * simd-methods.h: Add CompareGreaterThan.
9238
9239         * simd-methods.h: Remove CompareEquals.
9240
9241         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9242
9243         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9244
9245         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9246         CompareEqual.
9247
9248 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9249
9250         * basic-simd.cs: Fix tests due to change in the API.
9251
9252 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9253
9254         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9255
9256 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9257
9258         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9259
9260         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9261         inst_offset as this has invalid values for LDADDR.
9262
9263 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9264
9265         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9266
9267         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9268
9269 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9270
9271         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9272         for accessing field->data.
9273
9274 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9275
9276         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9277
9278 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9279
9280         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9281
9282         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9283
9284 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9285
9286         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9287         from the cfg mempool.
9288
9289 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9290
9291         * basic-simd.cs: Tests for new methods in Vector8us.
9292
9293 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9294
9295         * mini-ops.h: Add multiply and store high.
9296         
9297         * cpu-x86.md: Same.
9298
9299         * mini-x86.c (mono_arch_output_basic_block): Same.
9300
9301         * simd-methods.h: Same.
9302
9303         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9304         and CompareEqual.
9305
9306 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9307
9308         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9309         mono_class_setup_vtable ().
9310
9311         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9312         mono_class_get_vtable_entry () for accessing klass->vtable.
9313
9314         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9315
9316         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9317         found.
9318
9319         * method-to-ir.c (mono_save_token_info): Don't save references made from
9320         wrappers.
9321
9322         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9323         of generic instances.
9324
9325         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9326
9327 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9328
9329         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9330         OP_JMP depends on the method signature.  Calculate it properly.
9331
9332 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9333         
9334         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9335         called directly.
9336
9337         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9338         instances.
9339         (emit_extra_methods): Add another table mapping method indexes to 
9340         offsets in the extra_method_info table.
9341
9342         * mini.h: Bump AOT file format version.
9343         
9344         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9345         and mono_aot_get_method_from_token () into one function.
9346
9347 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9348
9349         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9350         separate counter.
9351
9352 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9353
9354         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9355         methods.
9356
9357         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9358         disable_aot.
9359
9360         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9361
9362         * mini.h: Bump aot file format version.
9363
9364         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9365         AOT file can contain native code for methods which are not in the METHOD
9366         table. Generate code for non-sharable generic instances of generic methods
9367         found in the METHODSPEC table.
9368         
9369         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9370         encoding generic type handles.
9371
9372         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9373         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9374
9375         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9376         macros + MONO_ADD_INS.
9377
9378         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9379         context as well.
9380
9381         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9382
9383         * mini.h: Bump aot file format version.
9384
9385         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9386
9387 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9388
9389         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9390         platforms, with definable stack alignment value.  Set to 16 now
9391         for all platforms.
9392
9393         * mini.c, mini.h, driver.c: Command line option for disabling
9394         stack alignment.
9395
9396 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9397
9398         * basic-simd.cs: Tests for new methods in Vector4ui.
9399
9400 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9401
9402         * mini-ops.h: Add packed int shuffle.
9403         
9404         * cpu-x86.md: Same.
9405
9406         * mini-x86.c (mono_arch_output_basic_block): Same.
9407
9408         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9409         extract mask, max, min, shuffle.
9410
9411         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9412
9413 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9414
9415         * basic-simd.cs: Tests for new methods in Vector8us.
9416
9417 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9418
9419         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9420         RuntimeTypeHandle, not a TypedReference.
9421
9422 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9423
9424         * simd-intrinsics.c: remove relocations.
9425
9426 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9427
9428         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9429         optimizations from the x86 backend.
9430
9431 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9432
9433         * simd-methods.h, simd-intrinsics.c: debloat method names and
9434         prepare for no relocations.
9435
9436 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9437
9438         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9439         
9440         * cpu-x86.md: Same.
9441
9442         * mini-x86.c (mono_arch_output_basic_block): Same.
9443
9444         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9445         extract mask, max, min and sum of absolute differences.
9446
9447         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9448         method name.
9449
9450 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9451
9452         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9453         Renamed one test for consistency.
9454
9455 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9456
9457         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9458         fix to the code that deal with other blocks.
9459
9460 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9461
9462         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9463
9464 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9465
9466         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9467         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9468         able to process the source reg.
9469
9470 2008-10-16  Martin Baulig  <martin@ximian.com>
9471
9472         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9473
9474         * inssel.brg: Add `OP_HARD_NOP'.
9475
9476         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9477
9478         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9479         `OP_HARD_NOP' instruction when running inside the debugger.
9480
9481         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9482         `OP_HARD_NOP' instruction when running inside the debugger.
9483
9484 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9487         now works. The issue with the regalloc tripping up no longer
9488         happens.
9489
9490         * simd-intrinsics.c (load_simd_vreg): Same.
9491
9492 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9493         
9494         * basic-simd.cs: Tests for new Vector8ui methods.
9495
9496 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9497
9498         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9499         only for type. This fixes crashes where MonoInst::klass is checked
9500         for ops of type != VTYPE or OBJ.
9501
9502         * simd-intrinsics.c (load_simd_vreg): Same.
9503
9504 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9505
9506         * mini-ops.h: Add ops for packed shuffle/max/avg and
9507         extract mask.
9508         
9509         * cpu-x86.md: Same.
9510
9511         * mini-x86.c (mono_arch_output_basic_block): Same.
9512
9513         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9514         extract mask.
9515
9516         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9517         to emit extract mask op.
9518
9519         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9520         to emit word shuffles.
9521
9522 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9523
9524         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9525         the largest alignment needed by a variable, but at least
9526         sizeof(gpointer).
9527
9528 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9529
9530         * basic-simd.cs: Tests for the fixes in the last commit.
9531
9532 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9535         no longer handles STACK_PTR input.
9536
9537         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9538
9539         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9540         get_simd_vreg   but handles STACK_PTR input.
9541
9542         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9543         as the input can be an arbitrary pointer.
9544
9545         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9546         LDADDR local optimization directly otherwise use a store op.
9547
9548 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9549
9550         * basic-simd.cs: Tests for dup low and dup high.
9551
9552 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9553
9554         * mini-ops.h: Add dup low and dup high ops.
9555         
9556         * cpu-x86.md: Same.
9557
9558         * mini-x86.c (mono_arch_output_basic_block): Same.
9559
9560         * simd-intrinsics.c (vector4f_intrinsics): Same.
9561
9562 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9563
9564         * basic-simd.cs: Tests for recently added functionality.
9565
9566 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9567
9568         * mini-ops.h: Add remaining sse1 fp ops.
9569         
9570         * cpu-x86.md: Add remaining sse1 fp ops.
9571
9572         * mini-x86.c (mono_arch_output_basic_block): Same.
9573
9574         * mini.h: Add enum for simd FP compare conditions.
9575
9576         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9577
9578         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9579         so the backed can generate the appropriate op.
9580
9581 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9582         This patch squeese one more byte from the SimdIntrinsc struct.
9583
9584         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9585         a a shift amount intead of simply or'ing it.
9586
9587         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9588
9589         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9590         byte so we can have an aditional flags field without increasing struct size.
9591
9592         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9593         against the simd_supported_versions bitmask.
9594
9595         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9596
9597 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9598
9599         * mini.c: remove rawbuffer code (the only use here is unsafe because
9600         it takes locks during signal handling and the kernel now provides much
9601         better info in proc/pid/smaps these days).
9602
9603 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9606         OP_X86_PUSH_OBJ. Fixes #434620.
9607
9608         * objects.cs: Add a test.
9609         
9610 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9611
9612         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9613         that the packuswb/packusdw don't work with unsigned numbers for what
9614         would be negative numbers in signed format.
9615
9616         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9617         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9618
9619         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9620
9621         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9622
9623         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9624
9625         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9626
9627         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9628         add more ops.
9629
9630         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9631         version as the enum in mini.h.
9632
9633         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9634         for sse3 ops, check the simd_version field if present. This way the code
9635         works with all versions of sse.
9636
9637 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9638
9639         * simd-intrinsics.c: Fixed intrinsic name typo.
9640
9641         * mini.h: Added missing simd exported function.
9642
9643         * basic-simd.cs: Added tests for Vector4ui.
9644         Fixed broken test for Vector16b.
9645
9646 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9649         the max length to 64.
9650
9651 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9652
9653         * method-to-ir.c: Only do the fast virtual generic method call for
9654         non-wrapper methods.
9655
9656         * mini.h, mini-trampolines.c: The new generic virtual remoting
9657         trampoline handles virtual method calls via the vtable (as done by
9658         the fast virtual generic method calls) to remoting proxies.
9659
9660         * mini.c (mono_jit_create_remoting_trampoline): For generic
9661         methods reate a generic virtual remoting trampoline.
9662
9663         * mini-amd64.h: Enable fast virtual generic method calls again.
9664
9665 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9666
9667         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9668         restore registers when doing tail calls.
9669
9670 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9671
9672         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9673         Vector4ui.
9674
9675 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9676
9677         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9678
9679 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9680
9681         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9682
9683 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9684
9685         * basic-simd.cs: Retrofit for API changes.
9686
9687 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9688
9689         * mini-ppc.c: Handle integer stack arguments for tail calls.
9690
9691 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9692
9693         * optflags-def.h: Removed sse3 optimization.
9694
9695         * driver.c: Same.
9696
9697         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9698         sse3.
9699
9700         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9701
9702         * mini.h: Added enumeration with simd versions.
9703
9704         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9705         for detecting SSE3.
9706
9707         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9708
9709         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9710
9711 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9712
9713         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9714
9715         * basic-simd.cs: Fixed test naming.
9716
9717 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9718
9719         * mini-ops.h: Added ops for packed and saturated math, shifts
9720         and packing/unpacking.
9721
9722         * cpu-x86.md: Added descriptors for the above ops.
9723
9724         * mini-x86.c: Added code to emmit the above ops.
9725
9726         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9727
9728 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9729
9730         * aot-compiler.c (compile_method): Enable AOT for generic code.
9731
9732         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9733
9734 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9735
9736         * mini.c: add a workaround for a common screwup that ends up blamed
9737         to mono (other processes blocking signal delivery).
9738
9739 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9742         in the LDFLD/STFLD opcodes. Fixes #432673.
9743
9744         * iltests.il.in: Add a new test.
9745
9746 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9747
9748         * mini-arm.c: attach the thread in unmanaged->managed transitions
9749         using delegates (bug #433148).
9750
9751 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9752
9753        * basic-simd.cs: Use new ShuffleSel constants.
9754
9755 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9756
9757         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9758
9759         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9760         only disable simd intrinsics if no sse2 is detected.
9761
9762         * optflags-def.h: Added sse3.
9763
9764         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9765         is disabled.
9766
9767 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9768
9769         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9770         when adding delegate-invoke wrappers.
9771
9772 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9773
9774         * Makefile.am: Reenable the simd tests.
9775
9776 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9777
9778         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9779           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9780           other vreg is allocated to that hreg.
9781
9782         Contributed under MIT/X11 license.
9783
9784 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9787         yet checked in.
9788
9789 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9790
9791         * basic-simd.cs: New test suite for SIMD intrinsics.
9792
9793         * Makefile.am: Added new tests.
9794
9795 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9796
9797         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9798
9799         * mini-ops.h: Same.
9800
9801         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9802
9803         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9804         using SSE2 aware opcodes.
9805
9806         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9807         is enabled, this code path is only reachable if conversion ops are emmited after
9808         mono_method_to_ir.
9809
9810         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9811
9812         This optimization saves 6 bytes per conversion against the old version.
9813
9814 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9815
9816         * aot-compiler.c (compile_method): Don't skip methods referencing 
9817         generic methods without a corresponding entry in token_info_hash, since
9818         encode_method_ref () can handle all generic methods now.
9819
9820         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9821         generic context is set.
9822         
9823         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9824         generic sharing of LDTOKEN.
9825
9826 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9827
9828         * mini-amd64.h: Temporarily disabled fast virtual generic method
9829         calls because it breaks the System.Runtime.Remoting tests.
9830
9831 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9832
9833         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9834
9835         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9836         so inlining actually works.
9837         (check_inline_caller_method_name_limit): Ditto.
9838
9839 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9840
9841         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9842         64 bit safety (from Olaf Hering and Andreas Farber).
9843
9844 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9845         
9846         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9847         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9848         unused virtual call support code.
9849
9850         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9851         
9852         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9853         which can't use aot trampolines.
9854         (decode_patch): Don't create aot trampolines for methods which can't use
9855         them.
9856
9857         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9858         use aot trampolines.
9859
9860         * mini.h: Bump AOT image format version.
9861         
9862 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9863
9864         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9865         to save_token_info () since cmethod is inflated for constrained calls.
9866
9867         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9868
9869 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9870
9871         * Makefile.am: Add build rules for ppc64.
9872         This avoids the build failing at pedump with unresolved symbols
9873         due to lack of arch_sources. Instead it will now fail earlier
9874         due to lack of cpu-ppc64.md.
9875
9876         Contributed under MIT/X11 license.
9877
9878 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9879
9880         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9881         tail calls.
9882
9883         * iltests.il.in: Add test case for tail call with many arguments.
9884
9885 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9886
9887         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9888         to the fast virtual generic method code until the aot case is fixed.
9889
9890 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9891
9892         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9893
9894 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9895
9896         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9897         thunks.
9898
9899 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9900         
9901         * simd-intrinsics.c: Forgot to add this one.
9902
9903         * mini-codegen.c: Fix macro in case SIMD is not supported.
9904
9905 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9906         
9907         This patch land initial JIT support for simd intrinsics.
9908
9909         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9910
9911         * Makefile.am: Added simd-intrinsics.c
9912
9913         * simd-intrinsics.c: New file with simd instrinsic related
9914         code.
9915
9916         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9917
9918         * cpu-x86.md: Add simd related instructions.
9919
9920         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9921
9922         * driver.c: Added two new --regression variants.
9923
9924         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9925
9926         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9927
9928         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9929         extract some complicated logic to helper functions.
9930
9931         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9932
9933         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9934
9935         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9936         the specialized simplification pass.
9937
9938         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9939
9940         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9941
9942         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9943         table.
9944
9945         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9946         if MONO_ARCH_NEED_SIMD_BANK is defined.
9947
9948         * mini-ops.h: Added the new simd ops.
9949
9950         * mini-x86.c: Added mono_arch_xregname.
9951
9952         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9953
9954         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9955
9956         * mini-x86.h: Define simd related MONO_ARCH macros.
9957
9958         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9959
9960         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9961
9962         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9963         MONO_CLASS_IS_SIMD to deal with simd related IR.
9964
9965         * mini.h (MonoInst): Added spill_var to the backend union.
9966
9967         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9968
9969         * mini.h: Added forward declarations of the new simd fuctions.
9970
9971         * optflags-def.h: Added new optimization names SIMD.
9972
9973         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9974
9975         * regalloc.h: Added support for working with 3 register banks.
9976
9977         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9978
9979         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9980
9981 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9982
9983         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9984
9985 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9988         instead of one on 64 bit systems.
9989
9990         * method-to-ir.c: Remove unused includes.
9991
9992 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9995         cfg->used_int_regs, since the two are different on arm.
9996
9997 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9998
9999         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
10000         mono_method_get_vtable_index() to get the vtable index.
10001
10002 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10003
10004         * method-to-ir.c (mono_method_to_ir2): Don't create native
10005         wrappers for array methods, because they're never called (and if
10006         they were called they wouldn't work).
10007
10008 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10009
10010         * method-to-ir.c (mono_method_to_ir2): Array methods are
10011         special-cased and must not be invoked indirectly via the (M)RGCTX
10012         when generic sharing is turned on.  Fixes #431413.
10013
10014 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10015
10016         * method-to-ir.c: When generic sharing is active, call
10017         non-interface virtual generic methods via the standard trampoline.
10018
10019         * mini-trampolines.c: Handle virtual generic shared methods.
10020
10021         * mini.h, mini-x86.c, mini-x86.h: New argument for
10022         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
10023         method thunks and which is the trampoline to call if the lookup
10024         fails.  Enable the virtual generic method thunk for x86.
10025
10026         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
10027         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10028         argument but assert that it's NULL, because these archs don't yet
10029         implement the virtual generic method thunk.  Changes in the IMT
10030         thunk data structures.
10031
10032 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10033
10034         * aot-compiler.c (emit_globals): Avoid invalid characters in
10035         the static linking symbol.
10036
10037         * objects.cs: Add a test for the range check optimization. Fix warnings.
10038
10039         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10040         optimization from the current JIT.
10041
10042         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10043         later in decompose_array_access_opts () to allow more optimizations.
10044
10045         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10046         mono_decompose_soft_float () for consistency.
10047
10048         * mini-ops.h: Fix arguments of OP_STRLEN.
10049
10050         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10051         into a separate function.
10052         (reset_cast_details): Ditto.
10053         (handle_unbox): Save cast details. Fixes #431254.
10054
10055         * method-to-ir.c: Remove some obsolete FIXMEs.
10056
10057 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10058
10059         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10060
10061 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10062
10063         * mini-codegen.c: More work on macros to make them
10064         ready for multiple regbanks.
10065
10066 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10067
10068         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10069
10070         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10071
10072 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10073
10074         * mini-codegen.c (mono_spillvar_offset): Proper support for
10075         multiple regbanks.
10076
10077 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10080         the stack overflow changes.
10081
10082 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10083
10084         * mini-codegen.c: Make all bank macros depend on reg_bank.
10085
10086         * mini-codegen.c (mono_local_regalloc): Make free mask
10087         initialization regbank aware.
10088
10089 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10090
10091         * mini-codegen.c (mono_local_regalloc): Extract callee
10092         mask selection to a function and make it regbank aware.
10093
10094 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10095
10096         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10097         code to deal with many regbanks.
10098
10099 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * mini-codegen.c: More fp->regbank changes.
10102
10103 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10104
10105         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10106         of a hardcoded constant.
10107
10108 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10109
10110         * method-to-ir.c (type_from_stack_type): Fix typo.
10111
10112 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10113
10114         * mini-ia64.c (emit_move_return_value): Convert float return values to
10115         double.
10116
10117         * objects.cs: Add a new test.
10118         
10119         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10120         VARARG methods to fix an assert later.
10121
10122         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10123         end so it at least compiles.
10124
10125 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10128
10129 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10130
10131         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10132         optimization to a new function (emit_optimized_ldloca_ir) and enable
10133         it for both ldloca and ldloca_s.
10134
10135 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10136
10137         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10138         gshared CASTCLASS code.
10139
10140         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10141         amd64, where the libc stack unwinder encounters stack frames referring to
10142         native code in unmapped memory.
10143
10144         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10145         sharing.
10146
10147         * generics.cs: Add new test.
10148
10149 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10152         add a check that one of the ARM_FPU_ constants is defined.
10153
10154         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10155         
10156         * mini-exceptions.c: Fix build on non-altstack platforms.
10157
10158         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10159         sharing of vtypes.
10160
10161         * ir-emit.h: Add a comment to NEW_PCONST.
10162
10163         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10164
10165         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10166
10167         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10168         after the changes to MonoJitDomainInfo.
10169
10170 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10171
10172         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10173
10174 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10175
10176         * mini-ppc.c: Compiler warning fixes.
10177
10178 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10179
10180         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10181         for pinvokes.
10182
10183 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10184
10185         * exceptions-ppc.c, mini-ppc.h: Compile
10186         mono_arch_handle_altstack_exception() on Darwin, too.
10187
10188 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10189
10190         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10191         work on archs which don't have generic sharing implemented, only
10192         without the vtable_arg.
10193
10194 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10195
10196         * mini.c: Added comment explaining why delegate ctor icall
10197         wrappers are compiled.
10198
10199 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10200
10201         * mini.c: Don't produce trampolines to delegate ctor icall
10202         wrappers but compile them upfront.
10203
10204 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10205
10206         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10207         runtime-set function when going back to managed code. Currently this
10208         is used to set back the protection on the soft ovf pages and/or to
10209         throw the stack overflow exception that happened in unmanaged code.
10210
10211 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10212
10213         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10214         runtime-set function when going back to managed code. Currently this
10215         is used to set back the protection on the soft ovf pages and/or to
10216         throw the stack overflow exception that happened in unmanaged code.
10217
10218 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10219
10220         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10221         the support code for restoring stack protection after stack overflows
10222         that happen in unmanaged code. Don't set the exec permission on the
10223         soft overflow area.
10224
10225 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10226
10227         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10228         delegate->method_ptr is set. Fixes #428054.
10229
10230 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * tests.cs: Rename to ratests.cs.
10233
10234         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10235         emit_get_rgctx_... functions.
10236
10237 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10238
10239         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10240
10241 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10242
10243         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10244         before asserting that method is sharable.
10245
10246 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10247
10248         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10249         whether method needs a static RGCTX wrapper used instead of
10250         complex conditions.
10251
10252         * generic-sharing.c, mini.h: A few functions moved to
10253         metadata/generic-sharing.c.
10254
10255 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10256
10257         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10258         Generic code sharing for value types, which essentially means
10259         treating value type methods like static methods.  The RGCTX is
10260         passed in the same way.
10261
10262 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10263
10264         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10265         opcode when creating multi-dimensional arrays of open types.
10266
10267         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10268         open generic types.
10269
10270         * generics.cs: Add a test.
10271
10272         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10273
10274 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10275
10276         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10277
10278         * mini.c (mini_method_compile): Set it when running under the debugger. 
10279
10280         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10281         vreg optimization if the flag is set.
10282
10283         * driver.c (mono_main): Add --attach= option to pass options to
10284         the attach agent.
10285
10286         * mini.c (sigquit_signal_handler): Start the attach agent.
10287
10288         * ssapre.c: Disable this to save space since it is not yet ported to
10289         linear IR.
10290
10291         * regalloc2.c: Disable this to save space.
10292
10293         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10294
10295 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10296
10297         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10298         the -v option useful again.
10299
10300 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10303         --break-at-bb.
10304
10305         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10306         arrays of arrays. Fixes #428406.
10307
10308         * method-to-ir.c (mini_emit_castclass): Ditto.
10309
10310         * objects.cs: Add new test.
10311         
10312 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10313
10314         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10315         was wrong at it choked against target_type_is_incompatible for byref types.
10316
10317 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10320         places.
10321
10322 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10323
10324         * mini-exceptions.c: update a few more exceptions-related counters.
10325
10326 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10327
10328         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10329         new functions to allocate from persistent mempools.
10330
10331 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10334         multiple register banks in the future.
10335
10336         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10337
10338 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10339
10340         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10341
10342         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10343
10344         * mini.h: Export type_to_eval_stack_type.
10345
10346         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10347         is only ins->klass of byref types.
10348
10349 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10352         (mini_emit_memcpy2): Ditto.
10353
10354         * mini-amd64.c: Fix a warning.
10355
10356 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10357
10358         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10359         linking.
10360
10361 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10362
10363         * method-to-ir.c: Extract stloc micro-optimization to a
10364         function and apply it to all cases.
10365
10366 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10367
10368         * method-to-ir.c: Don't fail generic code sharing in cases we
10369         already support.
10370
10371 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10372
10373         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10374
10375 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10376
10377         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10378         implementation.
10379
10380 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10381
10382         * trace.c: make tracing more useful and correct, with per-thread
10383         id and indent info.
10384
10385 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10386
10387         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10388         doing a method call and the argument is an R4.
10389
10390 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10393         generic methods.
10394
10395 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10396
10397         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10398
10399 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10402         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10403
10404 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * driver.c: Add a --agent argument (not supported yet) to load managed
10407         agent assemblies before loading the main assembly, similarly to how the
10408         Java VM handles agents.
10409
10410 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10411
10412         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10413         function to do stack layout of local variables.
10414
10415 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10416
10417         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10418         calculation.
10419
10420 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10423         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10424         JIT if DISABLE_JIT is defined.
10425
10426         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10427         defined.
10428
10429 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10430
10431         * iltests.il.in: Disable the fconv test on PPC (the result is
10432         undefined according to ECMA).
10433
10434 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10435
10436         * iltests.il.in: Enable tail call tests for PPC.
10437
10438         * mini.h: Add variable for storing incoming valuetype argument
10439         addresses for tail calls.
10440
10441         * mini-ppc.c: Implement valuetype arguments and return values for
10442         tailcalls on Linux.
10443
10444 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10445
10446         * mini-ppc.c: Partially implement tail calls (struct arguments and
10447         return values not supported).
10448
10449         * method-to-ir.c: Enable tail calls on PPC.
10450
10451 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10454         runtime-invoke wrappers to work around the problem of them getting
10455         assigned to a random class.
10456
10457         * aot-runtime.c (mono_aot_get_method): Ditto.
10458         
10459 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10460
10461         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10462         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10463
10464 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10465
10466         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10467         until they're implemented properly.
10468
10469         * exceptions-ppc.c: Use arch-independent exception-handling code
10470         instead of custom one.
10471
10472         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10473         for Linear IR.
10474
10475         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10476
10477         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10478         applies when __powerpc__ is defined.
10479
10480 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10483         methods to their code to avoid computing the full name of wrappers and
10484         doing a lookup in a string hash table.
10485
10486 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10489         we identify bblocks before method_to_ir () is ran.
10490
10491         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10492         Also avoid optimizing branches pointing to themselves.
10493
10494         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10495
10496 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10497
10498         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10499
10500 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10503         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10504         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10505         'buf'.
10506
10507         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10508         jumped to the same entry in plt_jump_table.
10509
10510 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10511
10512         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10513         dynamic images.
10514
10515 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10516
10517         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10518         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10519         #421807.
10520
10521 2008-08-29  Geoff Norton  <gnorton@novell.com>
10522
10523         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10524         segment, and doesn't properly handle .space as .text.  Fixes
10525         AOT Mach/ARM
10526
10527 2008-08-29  Geoff Norton  <gnorton@novell.com>
10528
10529         * mini.c: Disable the mach exception handler when running on 
10530         ARM
10531
10532 2008-08-29  Geoff Norton  <gnorton@novell.com>
10533
10534         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10535         globals on Darwin/ARM
10536
10537 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10538
10539         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10540         since too many things depend on it. Instead, call 
10541         mono_runtime_set_no_exec ().
10542         
10543         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10544         the new JIT.
10545
10546         * aot-compiler.c: Add an 'asm-only' AOT option.
10547
10548         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10549                 
10550         * aot-compiler.c (compile_method): Disable gshared support for now as it
10551         doesn't yet work.
10552
10553 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10554
10555         * mini-amd64.h : Fix a compiler warning.
10556
10557         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10558           Changed to use a callback function to retrieve the unwind info.
10559           This avoids problems observed when code blocks were removed by
10560           unloading an app domain.
10561
10562         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10563           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10564           to work properly.
10565
10566         Contributed under MIT/X11 license.
10567
10568 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10569
10570         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10571           case to keep the stack aligned to 8.
10572
10573         Contributed under MIT/X11 license.
10574
10575 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10578         avoid repeated linear searches.
10579
10580 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10583         methods it can't handle.
10584         
10585         * aot-compiler.c (add_method): Avoid adding a method twice.
10586         (add_wrappers): Add runtime invoke wrappers for all methods.
10587
10588         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10589         function to create an aot-compatible version of this trampoline.
10590
10591         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10592
10593 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10596
10597         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10598         with a generic sharing failure.
10599
10600         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10601
10602         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10603         CEE_RETHROW. Fixes #419634.
10604
10605         * mini.c (mono_method_to_ir): Ditto.
10606
10607         * exceptions.cs: Add a new test.
10608         
10609         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10610         to mono_type_stack_size_internal () since some callers might not pass in
10611         an rgctx.
10612
10613         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10614         instrument_prolog. Fixes #419878.
10615
10616         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10617         doubles in soft float mode volatile.
10618
10619 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10622
10623         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10624         to handle soft float correctly.
10625
10626         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10627         the fast path.
10628
10629         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10630
10631         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10632         to sp, since the generics catch code requires it.
10633
10634         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10635         copying.
10636
10637         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10638         mono_arch_emit_imt_argument ().
10639
10640         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10641
10642         * mini-arm.c tramp-arm.c: Generic sharing updates.
10643
10644 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * mini-arm.c: Fix the arm build.
10647
10648         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10649         handling enums, generic instances and generic sharing.
10650         (mini_type_stack_size_full): Ditto.
10651
10652         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10653         
10654         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10655
10656         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10657
10658         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10659         trampolines.
10660
10661         * mini-arm.c: Various small generic sharing changes.
10662
10663         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10664         this for x86.
10665         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10666         custom code.
10667
10668         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10669         helper function to return a generic class init trampoline.
10670
10671         * method-to-ir.c mini.c: Use it.
10672         
10673         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10674         arch-specfic function to return a generic class init trampoline.
10675
10676         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10677         the GENERIC_CLASS_INIT custom code.
10678
10679         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10680         a fatal error, not a sharing failure.
10681
10682         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10683         needed.
10684
10685         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10686         trampoline argument from MONO_ARCH_VTABLE_REG.
10687
10688         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10689         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10690         argument, and pass the vtable in VTABLE_REG.
10691
10692         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10693         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10694         argument, and pass the vtable in VTABLE_REG.
10695         (mono_arch_create_trampoline_code_full): Remove some special casing for
10696         the rgctx fetch trampoline.
10697
10698         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10699         Fixes #419273.
10700
10701         * iltests.il: Add a test for it.
10702
10703 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10706
10707         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10708         no longer needed.
10709
10710         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10711         use mono_jit_info_table_find () to avoid recursion.
10712         (mono_delegate_trampoline): Add a sync wrapper here.
10713
10714         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10715         here.
10716
10717         * mini.c (mono_method_to_ir): Ditto.
10718         
10719         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10720         add_sync_wrapper argument. Don't add a sync wrapper here.
10721         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10722
10723         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10724         
10725 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10726
10727         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10728           of nonvolatile registers back from MonoContext to CONTEXT.
10729
10730         Contributed under MIT/X11 license.
10731
10732 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10733
10734         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10735           arguments on Winx64 there are only 4 argument registers.  For this
10736           logic to work the last argument must be pulled from the stack.  
10737
10738         Contributed under MIT/X11 license.
10739
10740 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10741
10742         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10743
10744         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10745         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10746         encode/decode_method_ref ().
10747
10748         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10749
10750         * aot-runtime.c (decode_patch): Ditto.  
10751
10752         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10753         MONO_PATCH_INFO_METHOD.
10754
10755         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10756         MonoGenericJitInfo.
10757
10758         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10759         MonoGenericJitInfo.
10760
10761         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10762
10763         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10764         one from the caller.
10765
10766         * aot-runtime.c (decode_generic_inst): New function to decode and
10767         return a interned generic inst.
10768         (decode_klass_ref): Use it.
10769         (decode_method_ref): Ditto.
10770
10771         * aot-compiler.c (emit_exception_debug_info): Save 
10772         jinfo->has_generic_jit_info too.
10773
10774 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10775
10776         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10777
10778         * iltests.il.in: Add a test for fconv_to_i.
10779
10780         * liveness.c: Disable the liveness2 pass for now to save space.
10781
10782         * regalloc2.c: Include mempool-internals.h to fix warnings.
10783
10784         * aot-compiler.c (encode_method_ref): Encode the context of generic
10785         instance methods.
10786
10787         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10788         the context saved in the aot file.
10789
10790         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10791
10792         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10793
10794         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10795         volatile so they won't be optimized away.
10796
10797 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10798
10799         * ssa.c:
10800         * ssa2.c:
10801         * mini.c:
10802         * regalloc2.c:
10803         * dominators.c: Remove duplicated functions that now are in
10804         mempool-internals.h.
10805
10806 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * aot-compiler.c: Fix warnings.
10809
10810         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10811
10812         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10813
10814         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10815         as the patch type.
10816
10817         * mini.c (mono_resolve_patch_target): Ditto.
10818         
10819         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10820         (encode_klass_ref): Add support for encoding VARs/MVARs.
10821
10822         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10823
10824         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10825         the handling of the got entries into a separate 'decode_got_entry' function.
10826         Add support for RGCTX_FETCH.
10827
10828         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10829         clobbered by the trampoline code.
10830
10831         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10832         not clobbered by the indirect calling code.
10833
10834 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10837         to fix the build.
10838
10839 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10840
10841         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10842         signature using the compilation mempool otherwise we would leak it.
10843
10844 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10847         mono_emit_abs_call ().
10848
10849         * patch-info.h: Add GENERIC_CLASS_INIT.
10850
10851         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10852
10853         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10854         as their target as a near call.
10855
10856         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10857         ABS handling code.
10858         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10859
10860         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10861         call to a runtime function described by a patch.
10862
10863         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10864         mono_emit_abs_call, this has the advantage that the ABS handling code in
10865         mono_codegen () can handle them both, and can handle other stuff in the
10866         future without additional code.
10867
10868         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10869         entry.
10870         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10871         abs addresses.
10872
10873         * mini.h: Add missing bblock related prototypes.
10874
10875         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10876         reverse_inst_list_len fields.
10877
10878         * mini.c: Refactor this file a bit by moving branch optimizations to 
10879         branch-opts.c.
10880
10881         * method-to-ir.c: Merge generic sharing changes missed earlier.
10882
10883         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10884
10885         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10886         shared patches. Process METHODCONST as a shared patch.
10887
10888         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10889         as it crashes on the 2.0 mscorlib.
10890
10891         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10892         to cause crashes.
10893         
10894         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10895         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10896         by IMT.
10897
10898         * aot-compiler.c: Reorganize the got handling code to be a bit more
10899         understandable.
10900
10901 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10904         mono_patch_info_equals/hash, and use it to massively simplify
10905         get_plt_index ().
10906
10907         * mini.c (mono_patch_info_hash): Simplify this and add support for
10908         more patch types.
10909
10910         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10911
10912         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10913         handling code, since an offset is not enough to identify a trampoline.
10914
10915         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10916
10917 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10918
10919         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10920
10921         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10922
10923         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10924
10925         * decompose.c: PPC decompositions for various ops.
10926
10927         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10928
10929 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10932         call the generic trampoline code using a call, instead of a jump, to
10933         remove some special casing from the generic trampoline code.
10934
10935         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10936         (mono_codegen): Ditto.
10937
10938         * aot-compiler.c aot-runtime.c: Ditto.
10939
10940         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10941
10942         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10943         helper function to find the offset corresponding to a lazy fetch trampoline.
10944
10945         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10946         when doing generic sharing.
10947
10948         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10949         places.
10950         
10951         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10952         mini-trampolines.c to be with the other trampoline creation functions.
10953
10954         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10955         as it is equal to method->signature in most cases, add a 
10956         mono_emit_method_call_full variant which takes a signature and an imt
10957         argument as well.
10958
10959 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10962         to this function, since it could be computed easily from the method 
10963         argument.
10964         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10965         more.
10966
10967         * method-to-ir.c mini.c: Remove references to 
10968         compile_generic_method_wo_context.
10969
10970         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10971         generic method calls.
10972         
10973         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10974         dimensional non-szarrays.
10975
10976         * mini.c (mini_init): Register mono_array_new_1.
10977
10978         * jit-icalls.c (mono_array_new_1): New jit icall.
10979
10980         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10981         pointing to the method.
10982
10983         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10984         method addresses belonging to METHOD_JUMP patches in the 
10985         jump_target_got_slot_hash.
10986         (mono_aot_load_method): Ditto.
10987
10988         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10989         METHOD_JUMP patches.
10990
10991         * mini.c (mini_create_jit_domain_info): New helper function which 
10992         initializes/frees domain->runtime_info.
10993         (mini_free_jit_domain_info): Ditto.
10994         (mini_init): Install the domain hook functions with the runtime.
10995
10996         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10997         information maintained by the JIT.
10998
10999         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
11000         insertion into jump_table_hash into mono_codegen (), also implement proper
11001         locking.
11002
11003         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
11004         tail calls, it is already done by the aot code.
11005         
11006         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
11007         mechanism on amd64.
11008
11009         * iltests.il.in: Make the jmp test a bit more complex.
11010
11011         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
11012         generic instances which doesn't have a token.
11013
11014         * aot-runtime.c (decode_method_ref): Ditto.
11015         
11016         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
11017         can handle this case now.
11018         (handle_box): Ditto.
11019
11020 2008-08-15  Geoff Norton  <gnorton@novell.com>
11021
11022         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
11023         debugging check.
11024
11025 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11028         calling generic methods.
11029
11030         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11031
11032         * aot-runtime.c (decode_patch_info): Ditto.
11033
11034         * mini.c (mono_resolve_patch_target): Ditto.
11035         
11036         * patch-info.h: Add METHOD_RGCTX.
11037
11038         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11039
11040 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11043         arguments in registers.
11044
11045         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11046         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11047
11048         * mini.c (mini_method_compile): Abort aot compilation for generic
11049         methods if generic sharing is disabled.
11050         
11051         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11052         an mrgctx.
11053
11054         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11055         requiring an mrgctx.
11056
11057         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11058         store instructions when converting a vcall to a normal call.
11059
11060         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11061         mono_arch_find_jit_info.
11062
11063 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11066         avoid calling mono_method_full_name () for every method even if the
11067         env var is not set.
11068         (check_inline_caller_method_name_limit): Ditto.
11069
11070 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11073         assemblies in one run.
11074
11075         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11076         skipped methods if it is not 0.
11077
11078         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11079
11080 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11081
11082         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11083           MONO_ARCH_HAVE_UNWIND_TABLE.
11084
11085         Contributed under MIT/X11 license.
11086
11087 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11088
11089         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11090           from default optimizaton list on Winx64.
11091
11092         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11093
11094         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11095           the LMF from the MonoJitTlsData structure.
11096
11097         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11098
11099         Contributed under MIT/X11 license.
11100
11101 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11102
11103         * mini.c (sigsegv_signal_handler): Fix the build.
11104
11105         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11106         assembly->aot_module.
11107
11108         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11109         hash table. This simplifies and speeds up a lot of code, and fixes support
11110         for .netmodules.
11111
11112         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11113         with the runtime.
11114
11115         * mini-exceptions.c: Ditto.
11116         
11117         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11118         'native_offset' argument, since these are computed in the 
11119         mono_find_jit_info () function.
11120
11121         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11122         is used by exceptions-ppc.c.
11123
11124         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11125         mono_arch_find_jit_info ().
11126         
11127         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11128         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11129         generic code in mini-exceptions.c.
11130
11131 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11132
11133         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11134
11135         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11136         
11137         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11138         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11139         called while holding the loader lock. Fixes #415608.
11140         (mono_aot_get_method_from_token_inner): Ditto.
11141
11142 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11145         to reduce differences between this and the generic implementation in
11146         mini-exceptions.c.
11147         (ves_icall_get_frame_info): Ditto.
11148
11149         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11150
11151         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11152         longer neccesarry.
11153
11154         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11155         mono_arch_get_call_filter () and make it non-static, for consistency with the
11156         other architectures.
11157
11158 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11159
11160         * mini.c:
11161         * local-propagation.c:
11162         * mini-x86.c: Correct the name of arch defines.
11163
11164 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11165
11166         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11167         NO_EMULATE_LONG_SHIFT_OPS define.
11168
11169 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11172         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11173
11174         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11175         MACH fixes. Merged from the 2.0 branch.
11176
11177         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11178
11179         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11180         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11181
11182         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11183
11184         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11185         mono_marshal_get_native_wrapper () signature changes.
11186
11187 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11188
11189         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11190         conversion bug under arm.
11191
11192 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11193
11194         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11195
11196         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11197         with overflow checking.
11198
11199 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11200
11201         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11202         to the genmdesc.pl file
11203
11204 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11207         arg_array in the soft-float versions of the LOAD/STORE macros.
11208
11209         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11210         implementation.
11211
11212         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11213
11214 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11217         a float HFA. Fixes #413621.
11218
11219 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11220
11221         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11222         frame_size to args_size. Fixes build.
11223
11224 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11225
11226         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11227         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11228
11229         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11230         the stack are not unaligned. Fixes #413247.
11231         
11232 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11233
11234         * mini.c: update jitted methods performance counters.
11235
11236 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11237
11238         * mini-exceptions.c: increase the exceptions thrown performance
11239         counter in mono_handle_exception ().
11240
11241 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11244         can work with netmodules.
11245
11246 2008-07-28  Geoff Norton  <gnorton@novell.com>
11247
11248         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11249         regression tests.
11250
11251 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11254         correct place.
11255
11256 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11257
11258         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11259           The float param registers and other param registers must be the 
11260           same index on Windows x64.
11261
11262         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11263           ArgValuetypeAddrInIReg argument case.  Setting the argument
11264           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11265
11266         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11267           variable computed above as the copy length for arguments of storage
11268           type ArgValuetypeAddrInIReg.
11269
11270         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11271           ArgValuetypeAddrInIReg argument case.  This case will rely on
11272           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11273
11274         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11275           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11276           jump and tail call instructoins as they do not follow the typical call behavior.
11277
11278         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11279           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11280           local variable and pass the local variable by reference to the called method.
11281
11282         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11283           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11284           of a struct is passed in a register it must be saved with the other
11285           volatile argument on the stack.
11286
11287         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11288           frame pointer the stack adjustment value must be saved to the unwind 
11289           info structure.
11290
11291         Contributed under MIT/X11 license.
11292
11293 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11294
11295         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11296         which got lost in the merge.
11297
11298 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11301         build.
11302
11303         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11304         
11305         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11306         icalls, since they won't be patched.
11307
11308         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11309         different code sequence when running under valgrind to prevent some valgrind
11310         errors.
11311
11312         * iltests.il.in: Add new regression test.
11313
11314         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11315         end with a throw.
11316
11317         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11318         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11319
11320         * iltests.il.in: Add new test.
11321
11322         * aot-compiler.c: Fix some warnings.
11323
11324         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11325         Fixes #412494.
11326
11327 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11330         (mini_usage_jitdeveloper): Add a missing --wapi option.
11331
11332 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11333
11334         * mini-codegen.c: Simplify the is_fp macros.
11335         (free_up_ireg): Remove, use free_up_reg instead.
11336         (free_up_reg): Fix the fp case.
11337
11338 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11341         lowered earlier.
11342
11343         * exceptions-x86.c: Merge some changes which seemed to have got lost
11344         in the linear-ir merge.
11345
11346         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11347
11348         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11349         long vreg volatile even if the variable was already created.
11350
11351         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11352         volatile variables.
11353
11354 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11357
11358         * mini.c (mono_jit_compile_method_inner): Add support for 
11359         MONO_EXCEPTION_BAD_IMAGE.
11360
11361         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11362         mini_method_get_context () returns NULL. Fixes #356531.
11363
11364         * mini.c (mono_method_to_ir): Ditto.
11365         
11366         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11367         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11368
11369 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11372         in the LDFTN implementation.
11373
11374 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11375
11376         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11377         code, patch calls to icalls, too, even if they're not in the
11378         shared generic code hash.  Fixes #411962.
11379
11380 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * cpu-x86.md: Increase the length of the fcall opcodes.
11383
11384         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11385         calls returning floats.
11386
11387         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11388         on NEWARR.
11389         
11390         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11391         missed earlier.
11392
11393         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11394         into the domain->method_code_hash.
11395
11396         * aot-compiler.c: Fix win32 build.
11397
11398         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11399         
11400         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11401         gshared NEWARR implementation.
11402
11403         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11404
11405         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11406         can be used outside of method_to_ir.
11407
11408         * mini.h (MonoCompile): Add arg_types field.
11409
11410         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11411         
11412         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11413         the values of the local arg_array and param_types array.
11414
11415 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11418         got accesses might only get generated later when NEWOBJ is decomposed.
11419         
11420         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11421         looking up the native code of the target method when a delegate is called
11422         for the first time.
11423
11424         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11425         optimization.
11426
11427         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11428
11429         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11430         AOT work on platforms without a working dlsym implementation.
11431
11432         * mini.h: Bump AOT image format version.
11433         
11434 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11435
11436         * mini-exceptions.c: Free a MonoType with
11437         mono_metadata_free_type() instead of g_free().
11438
11439         * aot-runtime.c: Free a MonoType.
11440
11441 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11442
11443         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11444         optimization.
11445
11446         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11447         fp stack on x86.
11448
11449 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11450         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11451         profiler hook.
11452
11453 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11456         NEWOBJ calls on valuetypes.
11457
11458         * iltests.il.in: Add new test.
11459
11460         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11461
11462 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11465         is no longer needed.
11466
11467         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11468         non register sized integer arguments.
11469         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11470         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11471         emit_memcpy2 ().
11472
11473         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11474         CEE_MONO_RETOBJ.
11475         
11476         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11477         two a binop with different sized arguments is emitted.
11478
11479         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11480         instruction in the ins==NULL case.
11481
11482 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11485
11486         * mini-x86.c: Fix osx build.
11487
11488         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11489         opcodes as well.
11490
11491         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11492         instruction for non int sized variables.
11493
11494         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11495         implementation.
11496
11497 2008-07-23  Robert Jordan  <robertj@gmx.net>
11498
11499         * method-to-ir.c: Fix MSVC build.
11500
11501 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11502
11503         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11504         a non int sized type, widen it to an int since newer versions of gcc seem to
11505         generate code which needs this.
11506
11507         * ssa2.c abcremoval2.c: Fix warnings.
11508
11509         * *: Merge the Linear IR branch.
11510
11511         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11512         the ChangeLog file there describes all the changes done over the years. 
11513         Further documentation can be found at www.mono-project.com/Linear_IL.
11514
11515 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11516
11517         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11518           The float param registers and other param registers must be the 
11519           same index on Windows x64.
11520
11521         Contributed under MIT/X11 license.
11522
11523 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11524
11525         * mini.c: Make the previous fix GC safe.
11526
11527 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11528
11529         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11530
11531 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11532
11533         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11534           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11535           ArgValuetypeAddrInIReg instead.
11536
11537         Contributed under MIT/X11 license.
11538
11539 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11540
11541         * mini-codegen.c (get_register_spilling): Fix a warning.
11542
11543 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11544
11545         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11546         for types which the initialization fails. Raises the provided exception
11547         at the right stop after cleanup.
11548
11549 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11550
11551         * aot-compiler.c: Free most of the memory allocated during compilation.
11552
11553         * mini.c (mini_parse_debug_options): Fix a leak.
11554         
11555         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11556         during aot compilation.
11557
11558 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11559
11560         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11561         it has too much register pressure.
11562
11563 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11566
11567 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11568
11569         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11570         on x86.
11571
11572         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11573         on amd64 similar to the way it is done on arm.
11574
11575         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11576
11577         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11578         consistency, normalize error messages, avoid loading aot-only modules in
11579         normal mode.
11580
11581         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11582         for consistency.
11583
11584         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11585
11586 2008-07-11  Martin Baulig  <martin@ximian.com>
11587
11588         * debug-debugger.h
11589         (MonoDebuggerInfo): Add `interruption_request'.
11590
11591 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * aot-compiler.c (emit_plt): Remove some dead code.
11594
11595         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11596
11597         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11598         return the plt info offset belonging to a given plt entry.
11599
11600         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11601         mono_aot_get_plt_info_offset.
11602         
11603         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11604         similar to the amd64 code by makeing jumps through a separate jump table 
11605         instead of embedding the jump addresses into the code.
11606
11607 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11610         method.
11611
11612 2008-07-10  Martin Baulig  <martin@ximian.com>
11613
11614         * mini.c (mini_method_compile): Disable generics sharing when
11615         running in the debugger.
11616
11617 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11620
11621         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11622         the local register allocator from running out of registers on x86 when 
11623         using aot.
11624
11625 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11626
11627         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11628         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11629         C4146.
11630
11631         Contributed under MIT/X11 license.
11632
11633 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11634
11635         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11636         speed up the assembler.
11637
11638 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11639
11640         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11641         support.
11642
11643         * mini.c: Move the soft float handling macros a bit earlier, add 
11644         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11645         place.
11646
11647         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11648
11649         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11650         read-only to help catch code allocation requests.
11651         
11652         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11653         and turn it off when using --aot-only or when compiling with --aot=full.
11654
11655         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11656         jump table for switches from the normal domain mempool, not the code
11657         manager.
11658
11659         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11660         unbox trampoline which handles aot-only mode too.
11661
11662         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11663         an AOTed unbox trampoline.
11664
11665         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11666
11667 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11668
11669         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11670         ""
11671
11672         Contributed under MIT/X11 license.
11673
11674 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11675
11676         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11677           the unwind information for the method at the end of the allocated block.
11678           
11679         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11680           MonoCompileArch to hold the unwind info for SEH on Winx64
11681         
11682         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11683           frame pointer info for the method being compiled.
11684           
11685         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11686           the call to mono_exception_from_token.
11687           
11688         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11689           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11690           information is stored a the end of the method block because it is all 32-bit offset based.
11691
11692         Contributed under MIT/X11 license.
11693
11694 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11697
11698         * wapihandles.c: Fix warnings.
11699
11700         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11701         mode.
11702
11703         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11704         mono_jit_compile_method in aot-only mode since that calls the type 
11705         initializer.
11706         
11707         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11708         get_delegate_invoke_impl in aot-only mode.
11709
11710         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11711
11712 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11715
11716         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11717         is on by default.
11718
11719         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11720
11721         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11722         init trampoline from the AOT file as well.
11723
11724         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11725         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11726         code.
11727
11728         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11729         mono_init.
11730
11731         * exceptions-amd64.c: Add _full variants for the remaining exception code
11732         creation functions as well, allow emission of relocatable code, remove
11733         caching since that is now done by the caller.
11734
11735         * mini-exceptions.c: Add _full variants for the remaining exception code
11736         creation functions as well, add aot-only support.
11737
11738         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11739         if we can determine a proper token for them.
11740         (add_wrappers): Add a few more wrappers.
11741         (emit_method_code): Remove some dead code.
11742         (emit_trampolines): Emit exception code too.
11743
11744         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11745
11746         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11747         mono_array_new_va which avoids varargs.
11748
11749         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11750
11751         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11752         mono_arch_create_specific_trampoline () in all places.
11753
11754         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11755         a bit so it can be used for other things as well.
11756         
11757         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11758         on demand as well.
11759
11760         * exceptions-amd64.c: Rename the caching from the exception code creation
11761         functions, it is done by the caller instead.
11762         
11763         * exceptions-amd64.c: Change the signature of the exception code creation 
11764         functions to allow the creation of relocatable code later.
11765
11766         * mini-exceptions.c: Add a set of functions to query the various 
11767         runtime-generated exception functions.
11768
11769         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11770         mono_arch_.. () functions.
11771         
11772 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11773
11774         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11775
11776         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11777
11778         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11779         (mini_get_vtable_trampoline): Ditto.
11780
11781         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11782         code in the AOT case by returning the code size and a list of relocations to
11783         the caller.
11784
11785         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11786
11787 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11788
11789         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11790           clean the stack.
11791
11792         Contributed under MIT/X11 license.
11793
11794 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11795
11796         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11797         so the buffer size can be computed correctly. Fixes #404735.
11798
11799         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11800         normally as cfg->debug_info is already freed.
11801
11802 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * mini-amd64.c: For calls returning vtypes in registers, don't store
11805         the return address on the stack, instead allocate a separate local for
11806         it. Fixes #404729.
11807
11808 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11809
11810         * mini-trampolines.c, mini.h: Add an argument to
11811         mono_create_jit_trampoline_in_domain() for turning off the adding
11812         of the sync wrapper.
11813
11814         * mini.c: Use the JIT trampoline without sync instead of
11815         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11816         be patched.
11817
11818 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11819
11820         * driver.c: Turn on GSHARED optimization by default.
11821
11822 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11825         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11826
11827         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11828         create a variant of the generic trampoline code callable from AOTed trampolines.
11829
11830         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11831         trampoline code callable from AOTed trampolines.
11832
11833         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11834
11835 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11836
11837         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11838         pass-through manner.
11839
11840         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11841         and don't fail sharing for them anymore.
11842
11843         * mini-exceptions.c: Handle exceptions in shared generic methods.
11844
11845         * generic-sharing.c: When checking the context of a generic
11846         method, also check its class's context.  Don't treat wrappers as
11847         sharable.
11848
11849         * mini-trampolines.c: Some code factored out to
11850         metadata/generic-sharing.c.  Handle the MRGCTX case.
11851
11852         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11853         we must deal with the method being of another instantiation of the
11854         class.  Add static rgctx invoke wrappers to generic methods.
11855
11856 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11857
11858         * mini.c: Provide all jit infos of generic shared methods with a
11859         generic jit info.
11860
11861         * mini-exceptions.c: Handle the new situation that a generic info
11862         might be available, but not info about the this/vtable/mrgctx
11863         variable.
11864
11865 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11866
11867         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11868         generic methods.
11869
11870 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * dominators.c (check_dominance_frontier): Fix a warning.
11873
11874         * mini.h: Add some missing prototypes.
11875
11876         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11877
11878         * driver.c (mono_jit_init_version): Correct the comments since the first
11879         argument should be the name of the root domain, not a filename.
11880
11881         * aot-runtime.c (make_writable): Error out if this is called while running
11882         with --aot-only.
11883         (load_aot_module): Ditto.
11884
11885         * aot-compiler.c: Really fix the computation of method indexes.
11886
11887         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11888         optimizations as this is no longer called frequently.
11889
11890         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11891         method and the invoke impl code and pass it to the delegate trampoline instead of
11892         just the delegate class.
11893
11894 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11895
11896         * aot-compiler.c: Fixup the computation of method indexes.
11897         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11898         the method builder infrastructure.
11899
11900         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11901         has no header.
11902
11903         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11904         mode, load the method right away instead of creating a trampoline.
11905
11906         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11907
11908         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11909         some checks a bit.
11910
11911 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11914         (mono_aot_load_method): Use method_index instead of method->token.
11915
11916         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11917         can handle icalls etc. properly.
11918
11919         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11920
11921         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11922
11923         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11924         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11925         JIT_ICALL_ADDR patch type.
11926
11927         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11928
11929         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11930         request flag.
11931         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11932
11933         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11934
11935 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11938         domain->jit_code_hash.
11939
11940 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11941
11942         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11943
11944 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11947         get_this_arg_from_call, let it compute it when needed.
11948
11949         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11950         gsctx from code only when needed.
11951
11952         * mini-trampolines.c (get_generic_context): Rename this to 
11953         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11954         it can be called by the arch backends.
11955
11956         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11957
11958 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * driver.c (mono_main): Add experimental --aot-only command line option.
11961
11962         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11963         set.
11964
11965 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11966
11967         * driver.c (DllMain): Remove mono_module_handle.
11968
11969         Contributed under MIT/X11 license.
11970
11971 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11972
11973         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11974         for emitting methods which are not in the source assembly. Detect and report
11975         failure of assembling+linking.
11976         
11977         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11978
11979         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11980
11981 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11982
11983         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11984
11985 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11986
11987         * mini.h: Remove some obsolete prototypes.
11988
11989         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11990
11991 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11992
11993         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11994         supported by Visual Studio, so use alloca().
11995
11996 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11999         Fixes #402585.
12000
12001 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12002
12003         * mini.c: Fail sharing of a generic method if it contains an open
12004         catch clause (because we don't pass MRGCTXs yet).
12005
12006 2008-06-23  Mark Probst  <mark.probst@gmail.com>
12007
12008         * mini.c: When compiling a method with generic sharing, insert the
12009         method instantiated with an all-Object generic context into the
12010         jit info table, instead of the context of the first instantiation
12011         of the method we happen to compile.
12012
12013 2008-06-18  Martin Baulig  <martin@ximian.com>
12014
12015         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
12016         `major_version' and `minor_version'.
12017
12018 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12019
12020         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
12021         mono_method_is_generic_sharable_impl() takes an additional
12022         argument specifying whether to treat type variables as reference
12023         types.
12024
12025 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12026
12027         * mini.h: Removed obsolete prototypes.
12028
12029 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12030
12031         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12032         already handle them.
12033
12034 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12035
12036         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12037         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12038         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12039         tramp-x86.c: Added a MonoGenericContext* argument to
12040         mono_arch_get_unbox_trampoline() so that it can call other
12041         functions which require it.
12042
12043 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12044
12045         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12046         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12047         mono_arch_get_this_arg_from_call() takes a
12048         MonoGenericSharingContext* as well.
12049
12050 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12051
12052         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12053         implement generic sharing of unbox.
12054
12055 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12056
12057         * mini.c: Don't compute the vtable to determine whether a field is
12058         special static, because it might not work for open types.
12059
12060 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12061
12062         * mini.c: Removed the unused token_type and token_source arguments
12063         from get_runtime_generic_context_ptr().
12064
12065 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12066
12067         * mini.c (ADD_BINOP): fix the build
12068
12069 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12072         a widening op.
12073
12074 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12075
12076         * mini.h: Removed class relations enum that's not used anymore.
12077
12078 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12079
12080         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12081
12082         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12083         the lazy fetch trampoline access code.
12084
12085 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12088
12089 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12092
12093         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12094
12095         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12096
12097 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12098
12099         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12100         intrinsics.
12101
12102         * mini-ops.h: Add MIN/MAX_UN opcodes.
12103
12104         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12105         intrinsics.
12106
12107         * basic-math.cs: Add more min/max tests.
12108
12109         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12110
12111 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12112
12113         * mini.c: Small fix in the prologue of emit_castclass.
12114
12115 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12118
12119         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12120         do not work even for unsigned types. Fixes #400014.
12121
12122         * basic-math.cs: Add regression tests for unsigned Min/Max.
12123
12124 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12125
12126         * mini.c: Added additional context_used argument to several
12127         functions, which will be needed for sharing generic methods.  Use
12128         GET_RGCTX macro wherever appropriate.  Declare only one
12129         context_used in mono_method_to_ir().
12130
12131 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12132
12133         * mini.c, generic-sharing.c: Removed generic class relations.
12134
12135         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12136         functions due to MRGCTX changes.
12137
12138 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12139
12140         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12141         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12142         with calculated IMT.
12143
12144         * mini.c: Generic sharing of calls via generic interfaces.
12145
12146         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12147         generic method with non-constant MonoGenericContext*.  Instead,
12148         the context is taken out of the method itself.
12149
12150 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12151
12152         * mini.c: Generic sharing of ldvirtftn.
12153
12154 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12155
12156         * mini.c: Generic sharing of ldftn.
12157
12158 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12159
12160         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12161
12162 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12163
12164         * mini.c: Generic sharing of the special case of ldtoken followed
12165         by a call to GetTypeFromHandle.
12166
12167 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12168
12169         * mini.c: Generic sharing of box for nullable types.
12170
12171 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12174         are passed on the stack. Fixes #324807.
12175
12176 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12177
12178         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12179         for the ArgValuetypeAddrInIReg case.
12180
12181         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12182         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12183
12184         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12185         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12186         local variable and pass the local variable by reference to the called method.
12187           
12188         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12189         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12190
12191         Contributed under MIT/X11 license.
12192
12193 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12194
12195         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12196
12197         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12198         everything.
12199
12200 2008-06-10  Martin Baulig  <martin@ximian.com>
12201
12202         * debug-mini.c
12203         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12204
12205 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12206
12207         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12208         possible error when no arguments are passed.
12209
12210         Contributed under MIT/X11 license.
12211
12212 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12213
12214         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12215         where the file name is NULL.
12216
12217 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12218
12219         * mini.c: Fix s390 build.
12220
12221 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12222
12223         * trace.c (mono_trace_parse_options): Fix warnings.
12224
12225         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12226
12227 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12228
12229         * mini.c (remove_block_if_useless): Avoid printing the method name.
12230         
12231         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12232         MONO_INST_NEW.
12233
12234         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12235         LMF. Not yet used.
12236
12237         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12238         translated code after it has been patched.
12239
12240 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12243         avoid problems during code patching on SMP systems.
12244         (emit_call): Avoid adding a patch info which is already added by 
12245         emit_call_body.
12246         (mono_arch_emit_exceptions): Ditto.
12247
12248 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12249
12250         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12251         MONO_TYPE_ISSTRUCT already checks for it.
12252
12253 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12254
12255         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12256           structs with floats on Winx64 the float registers are not used.  
12257           The integer registers are always used..
12258         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12259           only one register will be used and only if the size of the struct 
12260           is 1,2,4, or 8 bytes.
12261
12262         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12263           to work for Winx64.
12264
12265         Contributed under MIT/X11 license.
12266
12267 2008-06-05  Martin Baulig  <martin@ximian.com>
12268
12269         * debug-debugger.c (debugger_lookup_class): Also call
12270         mono_class_setup_methods() here; we're only called from RTI.
12271
12272 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12273
12274         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12275         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12276         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12277         Post-process object files and add dtrace-generated object, if necessary.
12278
12279         Contributed under MIT/X11 license.
12280
12281 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12282
12283         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12284         element class.
12285
12286         * mini.c: Generic sharing for unbox.any and castclass.
12287
12288 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12289
12290         * mini.c: Ignore tailcall prefix in shared generic code and when
12291         doing calls which require a vtable/rgctx argument.
12292
12293 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12294
12295         * mini.c: Don't free the JIT info.
12296
12297         * driver.c: Changes in the JIT info table testing code.
12298
12299 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12302         interruption. Fix some warnings.
12303
12304         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12305         interruption_checkpoint.
12306
12307 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12308
12309         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12310         from embedding applications.
12311
12312 2008-06-02  William Holmes  <billholmes54@gmail.com>
12313
12314         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12315           reserving 32 bytes on the stack when making calls. 
12316
12317         Contributed under MIT/X11 license.
12318
12319 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12322         the linear IL branch.
12323
12324         * driver.c: Print out more information for --version on arm.
12325
12326 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12327
12328         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12329         bb_exit instead, since out of line bblocks might not actually be emitted
12330         out-of-line.
12331         
12332         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12333         maximum epilog size for out of line bblocks if tracing is enabled.
12334
12335         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12336
12337 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12338
12339         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12340
12341 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12342
12343         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12344         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12345         opcodes.
12346
12347 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12350         the 'value' to store is a constant.
12351
12352         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12353
12354         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12355         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12356
12357 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12360         for accessing method->generic_container.
12361
12362 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12365         
12366         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12367
12368         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12369
12370         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12371         fails.
12372
12373 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12374
12375         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12376
12377         * mini.c: Handle the case when mono_class_vtable () fails.
12378
12379 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12380         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12381         the stat profiler.
12382
12383 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12384
12385         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12386         together with domain sharing.
12387
12388 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12389
12390         * mini.c: Treat callvirts to final methods like non-virtual calls
12391         when doing generic sharing, i.e. look them up in the runtime
12392         generic context.
12393
12394 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12395
12396         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12397         with computed types (for generic sharing).
12398
12399         * mini.c: Generic sharing for mkrefany and refanyval.
12400
12401 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12402
12403         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12404         possible.
12405
12406         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12407         the generic sharing code.
12408         
12409         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12410         when needed.
12411
12412 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12413
12414         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12415
12416 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12417
12418         * driver.c: updated copyright date
12419
12420 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12421
12422         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12423         needed.
12424
12425 2008-05-19  Martin Baulig  <martin@ximian.com>
12426
12427         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12428         pointing to the new `_mono_debug_using_mono_debugger' variable.
12429
12430         * driver.c
12431         (mono_main): Check mono_debug_using_mono_debugger() rather than
12432         the `MONO_INSIDE_MDB' environment variable to check whether we're
12433         inside the debugger.
12434
12435 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12438         argument.
12439
12440 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12441
12442         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12443
12444         * mini.c: Added mini_assembly_can_skip_verification. This
12445         function checks if the assembly requested to skip verification. 
12446         Fixes part of #387274.
12447
12448 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * mini.c (mini_get_method): Disable the check for open generic classes when
12451         using generic sharing.
12452
12453         * generics.cs: Add a test for #387034.
12454
12455         * mini.c (mini_get_method): Check whenever the method class is an open generic
12456         type, and return NULL in that case, causing a verification error. Fixes
12457         #384123.
12458
12459 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12460
12461         * driver.c (mono_main): Revert r102623. The right
12462         thing to do is to enable the verifier under verifiable
12463         unless a --security flag was passed.
12464
12465         We need this non-trivial behavior for --verify-all otherwise
12466         mcs-compileall won't be able to use it. As it needs everything to
12467         be verified under validil.
12468
12469 2008-05-06  Martin Baulig  <martin@ximian.com>
12470
12471         Fix #383749.
12472
12473         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12474         (mono_debugger_thread_cleanup): Likewise.
12475         (mono_debugger_extended_notification): Likewise.
12476
12477 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12478
12479         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12480         against both inflated and non-inflated methods. We need to check against the
12481         generic definition for cases where the instantiated method is not visible.
12482         We need to check against the inflated types for cases where the instantiation
12483         changes any super type. This fixes #382986.
12484
12485         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12486         that check for visibiliy as generic params only appears as the type subject
12487         of tokens on call opcodes. Field manipulation and ldftn must always
12488         target an exact type.
12489
12490 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12491
12492         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12493         if no related --security flag is passed.
12494
12495 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12496
12497         * mini-arch.h: Prepare support for ppc64.
12498
12499         Contributed under MIT/X11 license.
12500
12501 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12502
12503         * aot-runtime.c: Prepare support for ppc64.
12504
12505         Contributed under MIT/X11 license.
12506
12507 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12508
12509         * mini-ops.h: Prepare support for ppc64.
12510
12511         Contributed under MIT/X11 license.
12512
12513 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12514
12515         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12516
12517         Contributed under MIT/X11 license.
12518
12519 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12522         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12523         assemblies on windows.
12524
12525 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12526
12527         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12528         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12529         * main.c: Use UTF-8 encoded command line instead of Windows default code
12530         page on Windows to support Unicode.
12531         * driver.c (DllMain): New function for mixed-mode assembly support.
12532         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12533         export __stdcall functions without decoration.
12534
12535         Contributed under MIT/X11 license.
12536
12537 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12538
12539         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12540         saving it very early.
12541
12542 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12543
12544         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12545         deleted.  The only way to access the new RGCTX is via the
12546         trampline.
12547
12548         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12549         vtable instead of the RGCTX to static methods.
12550
12551         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12552         accessing the new RGCTX.
12553
12554         * generic-sharing.c: There is no separation between self, type
12555         arguments and other types in the RGCTX anymore.
12556
12557 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12558
12559         * mini-amd64.c (add_general): Remove previous stack adjustment.
12560         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12561         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12562         for 32 bytes of stack space reserved for all calls.
12563         
12564         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12565         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12566         adjustment.
12567         
12568         Code contributed under MIT/X11 license.
12569
12570 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12571
12572         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12573         against the root definition, peeling out method and type instantiations.
12574         Cache verify success results, code that fails verification is still
12575         checked multiple times.
12576
12577 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12580
12581 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12582
12583         * mini-amd64.c (add_general): Always increment stack on Win64.
12584         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12585         on Win64.
12586         
12587         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12588         stack based argument handling on Win64.
12589         
12590         Code contributed under MIT/X11 license.
12591
12592 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12593
12594         * Makefile.am (version.h): Add support for git-svn.
12595
12596 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12599         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12600         avoiding allocations and libc functions which might deadlock.
12601         
12602         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12603         'no-gdb-backtrace' option is set.
12604
12605         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12606
12607         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12608
12609 2008-04-21  Martin Baulig  <martin@ximian.com>
12610
12611         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12612         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12613
12614 2008-04-21  Martin Baulig  <martin@ximian.com>
12615
12616         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12617         `thread_vtable', `event_handler_ptr' and `event_handler'.
12618
12619 2008-04-21  Martin Baulig  <martin@ximian.com>
12620
12621         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12622         allows delayed initialization of the `executable_code_buffer' when
12623         attaching.
12624
12625 2008-04-21  Martin Baulig  <martin@ximian.com>
12626
12627         * mini.h (mono_debugger_create_notification_function): Removed.
12628         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12629
12630         * mdb-debug-info64.s
12631         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12632
12633         * mdb-debug-info32.s
12634         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12635
12636         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12637         currently only works on x86 and x86_64, so don't create it on ppc.
12638
12639 2008-04-21  Martin Baulig  <martin@ximian.com>
12640
12641         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12642
12643         * mini.c
12644         (mini_method_compile): In the fp elimination check, check
12645         `debug_options.mdb_optimizations' in addition to
12646         mono_debug_using_mono_debugger().       
12647
12648         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12649         disable some JIT optimizations which are only disabled when
12650         running inside the debugger.
12651         Added `--help-debug' option to describe the debugging options.
12652         (parse_debug_options): New static function to parse the `--debug'
12653         options, so we can easily add more stuff in future.
12654
12655 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12656
12657         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12658         the method has no body.
12659
12660 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12661
12662         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12663         assembly is not allowed in MSVC 64-bit compiler. 
12664         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12665         as we get floating point exceptions everywhere.
12666         
12667         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12668         correctly align arguments for call to throw_exception.
12669         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12670         
12671         Code contributed under MIT/X11 license.
12672
12673 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12674
12675         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12676
12677 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12680
12681         * mini-amd64.c (NEW_INS): Set cil_code.
12682
12683         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12684         from mini-amd64.c so all debugger related logic is in one place.
12685
12686         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12687         later won't have a random ip assigned to them.
12688
12689 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12692         the arch specific function initializes code_size.
12693         (mono_create_delegate_trampoline): Ditto.
12694
12695         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12696         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12697         platforms.
12698
12699         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12700         running under the debugger.
12701
12702         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12703         debugger.
12704
12705         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12706         debugger. Also move the disabling of optimizations here from driver.c.
12707         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12708         debugger.
12709
12710         * mini.h (MonoCompile): Add a few new flags.
12711
12712 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12713
12714         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12715         so the cil_code field of created MonoInst's is properly set.
12716         (mini_select_instructions): Ditto.
12717
12718         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12719         (MONO_INST_NEW_CALL): Ditto.
12720
12721         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12722         in many places so the ins->cil_code field is properly initialized.
12723
12724         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12725         place.
12726
12727 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * mini.c (mini_method_compile): Print a different message when compiling a 
12730         shared method.
12731         
12732         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12733         > 1.
12734
12735 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12738         SSE2 instructions.
12739
12740         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12741         
12742 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * mini.c (handle_stack_args): Make this return void since its return value was
12745         never used. Also set cfg->unverifiable for invalid IL instead of calling
12746         G_BREAKPOINT ().
12747
12748 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12749
12750         * mini.c: Make sure "this" is live in catch clauses with type
12751         variables in shared generic code.
12752
12753 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12754
12755         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12756         generic_class_is_reference_type() to ensure the proper behaviour
12757         when sharing generic code and the type in question is a type
12758         argument.
12759
12760 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12761
12762         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12763         race conditions when printing thread dumps. Fixes #377738.
12764
12765 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12766         
12767         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12768         shows up when both MonoInst arguments can cause aliasig.
12769         There is likely no way in the current JIT to trigger this problem, but
12770         it showed up in the development of generics sharing, when in a new
12771         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12772         When the generics sharing code will be committed, its tests will be
12773         valid also for this bug.
12774
12775 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12776
12777         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12778         PATCH_INFO_METHOD.
12779
12780         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12781         NULL.
12782
12783 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12784
12785         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12786         use a more detailed exception message for InvalidCastException.
12787
12788         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12789
12790         * driver.c (mono_main): Add --debug=casts option to turn on better 
12791         InvalidCastException message details.
12792
12793         * mini.c (mini_get_debug_options): New helper function to return the address of
12794         the debug_options variable.
12795
12796         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12797         the jit_tls TLS variable.
12798
12799         * mini.c (mono_jit_tls): New TLS variable.
12800
12801         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12802         option is used.
12803
12804 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12805
12806         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12807
12808         * mini.c: Removed verifer related stuff, code moved to verify.c.
12809
12810         * driver.c: Using code from verify.c instead of mini.c.
12811
12812 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12815         longer valid.
12816
12817 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12818
12819         * mini.c (check_for_method_verify): Enabling verification of
12820         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12821         have been fixed.
12822
12823 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12824
12825         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12826         caller saved registers as well.
12827         
12828         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12829         saved registers as well.
12830
12831 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12834
12835         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12836         code.
12837
12838 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12839
12840         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12841         to get_call_info.
12842         (get_call_info): Take a gsctx argument instead of 'cfg'.
12843
12844 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12845
12846         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12847         mono_verify_all is set.
12848
12849         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12850
12851         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12852
12853 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12854
12855         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12856         an exception.
12857
12858         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12859         verifier and the code generated by the compiler.
12860
12861 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12862
12863         * mini.c: Generic sharing of the non-nullable case of the box
12864         instruction.
12865
12866 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * inssel.brg: Fix the build.
12869
12870         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12871
12872 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12873
12874         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12875         Array:Address. Fixes #372410.
12876
12877         * iltests.il.in: New tests for readonly prefix.
12878
12879 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12882         mini-trampolines.c.
12883
12884         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12885         mini-exceptions.c.
12886
12887         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12888         
12889         * mini.c (mono_decompose_op_imm): New helper function.
12890
12891         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12892         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12893         return value.
12894
12895         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12896         mono_arch_output_basic_block. Fix warnings.
12897
12898         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12899         for now.
12900
12901 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12902
12903         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12904         since the extra frame is now detected automatically inside the loop.
12905
12906         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12907         opts which are now in mono_peephole_ins ().
12908         
12909         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12910
12911         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12912         frames and skip duplicate managed-to-native frames. Fixes #367665.
12913
12914         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12915         opts which are now in mono_peephole_ins ().
12916         (mono_arch_peephole_pass_2): Ditto.
12917
12918         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12919
12920         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12921         arch independent peephole optimizations.
12922
12923         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12924         opts which are now in mono_peephole_ins ().
12925
12926         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12927         
12928         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12929
12930         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12931         pattern.
12932
12933         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12934         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12935         opcode. 
12936
12937 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12940         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12941         return value.
12942
12943         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12944         mono_arch_output_basic_block. Fix warnings.
12945
12946 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12947
12948         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12949         conv.ovf.u.un.
12950
12951 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12954         conv.ovf.u.un.
12955
12956         * iltests.il: Add new tests.
12957
12958 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12959
12960         * mini.c: Removed Windows version macros.
12961
12962 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12963
12964         * generic-sharing.c: Put reflection types in the extensible part
12965         of the runtime generic context.
12966
12967         * mini.c: Generic sharing of the GetTypeHandle special case of the
12968         ldtoken instruction.
12969
12970 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12973
12974         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12975         
12976         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12977         consistency with the other version on the linear IR branch.
12978
12979         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12980
12981         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12982
12983         * iltests.il.in: Add new tests.
12984
12985 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12988
12989         * iltests.il.in: Add new tests.
12990
12991 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12992
12993         * mini.c: Two variables with the same name were declared in
12994         nesting contexts and one wasn't initialized.  Fixed.
12995
12996 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12997
12998         * mini.c: Generic sharing of the initobj instruction.
12999
13000 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13001
13002         * mini.c: make the test to optimize ldtoken from typeof() more
13003         precise.
13004
13005 2008-03-18  Mark Probst  <mark.probst@gmail.com>
13006
13007         * mini.c: Generic sharing of the initobj instruction for reference
13008         types.
13009
13010 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
13011
13012         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
13013         the mono_breakpoint_clean_code() code to perform bound checks.
13014
13015 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
13016
13017         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
13018         mono_arch_patch_callsite() to include the start of the managed method
13019         to be able to perform bound checks.
13020
13021 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13022
13023         * mini.c: Generic sharing for the isinst instruction.
13024
13025 2008-03-17  Mark Probst  <mark.probst@gmail.com>
13026
13027         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13028         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13029         with the runtime generic context argument.
13030
13031         * mini.c: Share calls to several types of unsharable methods by
13032         putting the address of the method code in the runtime generic
13033         context and doing an indirect call.
13034
13035         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13036         to switches.
13037
13038 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13039
13040         * generic-sharing.c: Change due to a change in the runtime genric
13041         context API.
13042
13043 2008-03-15  Martin Baulig  <martin@ximian.com>
13044
13045         * tramp-x86.c
13046         (mono_arch_nullify_class_init_trampoline): Add call to
13047         mono_breakpoint_clean_code() to make things work when running
13048         inside the debugger.
13049
13050         * tramp-amd64.c
13051         (mono_arch_nullify_class_init_trampoline): Add call to
13052         mono_breakpoint_clean_code() to make things work when running
13053         inside the debugger.
13054
13055 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13056
13057         * inssel-long.brg (reg): Fix 64 bit build.
13058
13059 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13060
13061         * mini.c, mini.h: Share static generic code by passing it an
13062         implicit argument pointing to the runtime generic context.
13063
13064         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13065         inssel-long32-mips.brg: New opcodes for calling shared static,
13066         which need to be passed the runtime generic context.
13067
13068         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13069         argument on the stack in the prologue if needed.  New function for
13070         finding the runtime generic context argument from the registers
13071         saved by the trampoline.
13072
13073         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13074         runtime generic context argument.
13075
13076         * tramp-amd64.c: Also restore the register used for the runtime
13077         generic context argument.
13078
13079         * mini-trampoline.c: Resolve shared static calls by consulting the
13080         runtime generic context via the new argument.
13081
13082         * generic-sharing.c: Add an argument to sharability-checking
13083         functions that specifies whether type variables should be treated
13084         as sharable type arguments.
13085
13086         * inssel-x86.brg: Removed a superfluous, buggy rule.
13087
13088         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13089         to switches.
13090
13091 2008-03-14  Martin Baulig  <martin@ximian.com>
13092
13093         * debug-debugger.c (main_thread_handler): Call
13094         mono_runtime_run_main() without sending any notifications.
13095
13096         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13097
13098 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13101
13102 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13103
13104         * tramp-x86.c: Fixed register restore offsets in the trampoline
13105         code for ECX and EDX.
13106
13107 2008-03-12  Geoff Norton  <gnorton@novell.com>
13108
13109         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13110         different ucontext_t implementations.
13111         * exceptions-arm.c: Use the above defines to get exceptions working on 
13112         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13113         * mini-arm.c: Implement iPhone icache support (based on a patch by
13114         Luke Howard lukeh@padl.com)
13115
13116 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13117
13118         * mini.c: Enable generic sharing of calls to non-static
13119         non-interface non-generic non-value-type methods.
13120
13121         * mini-trampolines.c: Resolve calls from shared generic code.
13122
13123 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13124
13125         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13126
13127         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13128
13129 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13130
13131         * mini.c: some fixes for the AOT compiler.
13132
13133 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13134
13135         * cpu-amd64.md: Add clob:1 to some float opcodes.
13136
13137 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13138
13139         * mini.h: Added MiniVerifierMode enumeration.
13140
13141         * mini.c: Added mini_verifier_set_mode to control
13142         the usage of the new verifier.
13143
13144         * mini.c (mono_method): Integrated the new verifier.
13145
13146         * driver.c: Extended --security option with validil and
13147         verifiable options to activate the new verifier.
13148
13149 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13152         optimization to ctors taking 0 or 2 arguments too.
13153
13154         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13155         a bit.
13156
13157         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13158
13159         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13160
13161 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13162
13163         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13164         non-aot case as well.
13165
13166         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13167
13168         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13169         changes.
13170
13171         * aot-compiler.c (encode_patch): Ditto.
13172
13173         * mini.h (G_MININT32): Fix the definition of this.
13174
13175 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13178
13179         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13180
13181 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13184         methods returning vtypes in registers.
13185         (mono_arch_allocate_vars): Ditto.
13186
13187         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13188
13189         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13190
13191         * generics.cs: Add a test from the linear IR branch.
13192
13193         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13194
13195         * mini.c (inline_method): Cache failed inline attempts.
13196
13197 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13198
13199         * mini.c: For shared methods of generic classes put the location
13200         of "this" into the MonoGenericJitInfo.
13201
13202         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13203         register out of a MonoContext by register number.  Add the generic
13204         sharing context as an argument to mono_arch_find_this_argument().
13205
13206         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13207         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13208         for new arch function.
13209
13210         * mini-exception.c: Handle open exception clauses in shared
13211         generic code.
13212
13213         * mini-trampolines.c: Supply additional argument to
13214         mono_arch_find_this_argument().
13215
13216 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * Makefile.am (regtests): Run the bench.exe tests last.
13219
13220 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13223         a bit.
13224
13225 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13228         with MS.
13229
13230         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13231         
13232         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13233
13234         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13235         whose class has no cctor.
13236
13237         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13238
13239 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13240
13241         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13242         unverified.
13243
13244 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13245
13246         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13247         to be in sync with the code on the linear IR branch.
13248
13249         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13250
13251         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13252
13253 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13256
13257         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13258
13259         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13260
13261         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13262
13263         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13264         
13265         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13266         body.
13267
13268 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13269
13270         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13271         OP_LOADR4_MEMBASE emission.
13272
13273         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13274         (mono_spillvar_offset_float): Ditto.
13275
13276         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13277
13278         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13279         emission.
13280
13281         * basic-long.cs: Add regression tests for them.
13282
13283         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13284         use.
13285         (mono_arch_allocate_vars): Fix representation of single-precision float
13286         argument.
13287         (mono_arch_output_basic_block): Ditto.
13288
13289         * inssel-mips.brg: Ditto, remove duplicate items.
13290
13291         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13292         arguments of tail calls as on other platforms.
13293         (mono_arch_output_basic_block): Handle tail calls.
13294
13295         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13296         register.
13297
13298         * objects.cs (test_5_pass_static_struct): Add test for it.
13299
13300         Contributed under MIT/X11 license.
13301
13302 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13303
13304         * Makefile.am: Use gmcs for compiling the regression tests.
13305
13306         * *.2.cs *.2.il: Rename to *.cs and *.il.
13307
13308 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * regalloc.h: Make the vassign array smaller.
13311
13312         * mini.c (mini_method_compile): Remove an unused field in cfg.
13313
13314         * mini-codegen.c: Add a bunch of micro optimizations.
13315
13316 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13317
13318         * regalloc.h: Remove some unused fields.
13319
13320 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13321
13322         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13323
13324         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13325
13326 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13327
13328         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13329
13330         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13331         trampoline: Fetch an entry from the runtime generic context.  If
13332         it's NULL, jump to the actual trampoline to fill the runtime
13333         generic context.  Otherwise, return it.
13334
13335         * mini.c: Call the lazy fetch trampoline to get entries out of the
13336         runtime generic context.
13337
13338         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13339         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13340         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13341
13342 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13343
13344         * mini.c: Fetch data out of the extensible part of the runtime
13345         generic context instead of calling a helper function.
13346
13347         * generic-sharing.c: Some functions moved into
13348         metadata/generic-sharing.c.  Helper function for fetching other
13349         types now checks and asserts against extensible rgctx (just for
13350         debugging purposes - the helper function isn't called anymore
13351         unless for debugging).
13352
13353 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13356         for tail calls up to the point that the tests in iltests.exe run. Also add a
13357         dummy CKFINITE implementation.
13358         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13359         needed for trampoline LMF frames.
13360
13361         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13362         trampoline LMF frames.
13363
13364 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13365
13366         * mini.c (inline_method): clean any pending loader error when inlining fail.
13367         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13368
13369 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13372
13373         * aot-runtime.c (decode_patch_info): Ditto.
13374
13375         * mini.c (mono_resolve_patch_target): Ditto.
13376         
13377         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13378         icall wrappers.
13379
13380         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13381         
13382         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13383         if it references an icall address.
13384
13385 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * cpu-s390x.md: Remove some more unused opcodes.
13388         
13389         * cpu-s390x.md: Remove some unused opcodes.
13390
13391         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13392         mono_op_imm_to_op ().
13393
13394         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13395         instead of a switch statement.
13396         
13397         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13398         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13399
13400         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13401         
13402         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13403
13404         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13405         -1.
13406
13407 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13408
13409         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13410         opened. Fixes #362607.
13411
13412         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13413
13414         * iltests.il.in: Add a test for static methods in interfaces.
13415
13416 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13417
13418         * genmdesc.c (build_table): Fix a crash on older glib versions.
13419
13420         * cpu-sparc.md: Remove some unused opcodes.
13421         
13422         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13423         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13424
13425         * cpu-amd64.md: Remove some unused opcodes.
13426
13427         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13428         like the other opcodes.
13429
13430 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13431
13432         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13433
13434         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13435
13436         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13437         variables 'cfg' instead of 'm' for consistency.
13438
13439         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13440
13441         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13442         argument holding the vtype return address, to avoid the ambigious use of
13443         cfg->ret for this purpose.
13444
13445         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13446
13447         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13448         
13449         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13450         new mono_print_ins () function which only takes one argument.
13451
13452 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13455         macro arguments.
13456
13457 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13460
13461         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13462
13463         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13464         opcodes and other small changes.
13465
13466         * mini-ops.h: Add some new opcodes from the linear IR branch.
13467
13468         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13469
13470         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13471         opcodes, use the REG_MEMBASE opcodes instead.
13472         
13473         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13474         opcodes, use the REG_MEMBASE opcodes instead.
13475         
13476         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13477         linear IR branch.
13478
13479         * mini.c (mono_op_imm_to_op): New helper function.
13480
13481         * mini-ops.h: Add some opcodes from linear IR branch.
13482
13483 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13486         <tsv@solvo.ru>.
13487
13488 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13489
13490         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13491         OP_ICONV_TO_R4/R8.
13492
13493         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13494
13495 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13496
13497         * aot-compiler.c (emit_method_code): Add an assert.
13498
13499         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13500         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13501         methods.
13502
13503 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13506         some load/store opcodes so they are consistent. 
13507         (mono_arch_emit_prolog): Simplify some code.
13508
13509         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13510
13511         * objects.cs: Add tests for large argument offsets on ARM.
13512
13513         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13514         stack offsets. Fixes #359651.
13515
13516         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13517
13518         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13519
13520         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13521
13522         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13523
13524         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13525
13526         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13527         rid of CEE_CONV_R_UN.
13528
13529         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13530
13531 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13534
13535         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13536
13537         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13538
13539         * cpu-amd64.md: Remove some unused opcodes.
13540
13541         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13542
13543         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13544
13545         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13546         arch specific functions for its parts. Call the peephole pass after local
13547         regalloc so the prolog can compute a more accurate max_offset.
13548         
13549         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13550         the corresponding OP_I/OP_L opcodes.
13551
13552         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13553
13554         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13555
13556 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13557
13558         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13559         as they are handled in mini.c.
13560
13561         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13562         
13563         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13564         case since it is handled in mini.c.
13565
13566         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13567
13568         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13569
13570         * *.c: Use the new opcodes in the IR and back end code.
13571
13572         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13573
13574         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13575
13576 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13577
13578         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13579         an assert because it has a race condition.
13580
13581 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13582
13583         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13584
13585         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13586
13587         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13588
13589         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13590         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13591
13592 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * cpu-amd64.md (move): Correct the maximum size of move.
13595
13596 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13597
13598         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13599         the generic class init trampoline to return quickly if the class
13600         is already inited.
13601
13602 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13605         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13606
13607 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13608
13609         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13610         branch.
13611
13612 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * objects.cs: Add some soft-float tests.
13615
13616         * mini.c: Fix a couple more soft-float issues.
13617
13618         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13619
13620         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13621         avoid a REX prefix.
13622
13623 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13626         exception happens while compiling a virtual method.
13627
13628 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13631         
13632         * mini-sparc.c: Fix build.
13633
13634         * mini-sparc.c (get_call_info): Add support for generic sharing.
13635
13636         * mini-exceptions.c: Add a FIXME.
13637
13638 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13641         altstack handling code.
13642
13643         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13644         
13645         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13646
13647         * mini-s390.c: Add support for generic sharing.
13648
13649         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13650         Fix CAS on s390.
13651         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13652
13653         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13654
13655         * mini-s390x.c: Add support for generic sharing.
13656         
13657         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13658         Fix CAS on ia64.
13659         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13660
13661         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13662         can be used since it takes a 16 bit signed immediate.
13663
13664         * inssel-s390x.brg: Fix OP_SETRET.
13665
13666         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13667
13668         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13669
13670         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13671
13672         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13673
13674         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13675         in one place.
13676
13677         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13678         stuff.
13679
13680         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13681         of the unused mono_arch_patch_delegate_trampoline stuff.
13682
13683 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13684
13685         * basic-long.cs: Move the fp related tests to basic-float.cs.
13686
13687         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13688
13689         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13690
13691         * basic-calls.cs: Add a test for proper float argument passing.
13692
13693         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13694         if the context corresponds to an exception received through a signal.
13695
13696         * exceptions.cs: Add a test for nullref handling at the start of a try
13697         clause.
13698
13699         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13700
13701         * jit-icalls.c (mono_break): New JIT icall.
13702
13703         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13704
13705         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13706
13707 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13708
13709         * cpu-*.md: Get rid of unused opcodes.
13710
13711         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13712
13713         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13714         by all platforms.
13715
13716         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13717         define.
13718
13719         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13720         the arch independent trampoline code in mini-trampolines.c.
13721
13722         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13723
13724         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13725
13726         * mini-s390.h: Remove an unused define.
13727         
13728         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13729         the arch independent trampoline code in mini-trampolines.c.
13730
13731         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13732
13733 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13736
13737         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13738
13739         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13740
13741         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13742
13743         * cpu-amd64.md: Use smaller sizes for int opcodes.
13744
13745         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13746
13747         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13748         objects.cs.
13749
13750         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13751         debugging.
13752
13753         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13754         instead of though a pointer to save an indirection when accessing elements of
13755         the array.
13756
13757         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13758         some typos.
13759         (NOT_IMPLEMENTED): New helper macro.
13760         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13761         of a bb.
13762
13763         * *.c: Use the new helper macro.
13764
13765 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13768
13769 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13770
13771         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13772         stack slots.
13773
13774 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13775
13776         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13777         profiling is enabled.
13778         
13779         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13780         the end.
13781         (mono_arch_emit_prolog): Add more first bblock optimizations.
13782
13783         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13784         in order if possible.
13785         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13786         bblock, since the arguments are still in their original registers.
13787
13788         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13789
13790 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13793         as well.
13794
13795         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13796         offset 0.
13797
13798         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13799
13800         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13801         process async exceptions received while in unmanaged code.
13802
13803         * mini.c (mini_init): Install a callback with the runtime which will be called
13804         when a thread receives an async exception while in unmanaged code.
13805
13806         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13807
13808         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13809
13810 2008-01-16  Wade Berrier  <wberrier@novell.com>
13811
13812         * cpu-g4.md:
13813         * cpu-arm.md:
13814         * cpu-s390x.md:
13815         fix build
13816
13817 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13818
13819         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13820         compilation with sun cc.
13821
13822         * cpu-*.md: Fix the build.
13823
13824         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13825
13826         * mini-amd64.h: Add some comments to the MonoLMF structure.
13827
13828         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13829         
13830         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13831         in the LMF structure if possible. This saves two instructions in the
13832         managed->native wrappers.
13833
13834         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13835
13836 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13837
13838         * generic-sharing.c: New type argument lookup code which uses the
13839         runtime generic context template.
13840
13841 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13844
13845         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13846         (mono_arch_output_basic_block): Fix localloc implementation.
13847
13848         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13849
13850         * mini-ia64.c (peephole_pass): Fix ia64 build.
13851
13852         * mini-amd64.c (peephole_pass): Fix a warning.
13853         
13854         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13855         at a constant offset from sp/fp.
13856
13857         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13858         instead of obtaining it from *lmf in the managed method case.
13859
13860 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13861
13862         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13863
13864 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13865
13866         * mini.h (MonoInstList): New type.
13867         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13868         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13869         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13870         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13871         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13872         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13873         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13874         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13875         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13876         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13877         MONO_INST_LIST_FOR_EACH_ENTRY,
13878         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13879         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13880         mono_inst_list_first, mono_inst_list_last,
13881         mono_inst_list_next, mono_inst_list_prev): New instruction
13882         list handling interfaces.
13883         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13884         list head 'ins_list'.
13885         (MonoInst): Replace next pointer with list head 'node'.
13886         (MonoCallInst): Make 'out_args' a MonoInstList.
13887         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13888         (MonoCompile): Delete reverse_inst_list and
13889         reverse_inst_list_len.
13890         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13891         mono_arch_lowering_pass, mono_arch_local_regalloc,
13892         mono_arch_output_basic_block, mono_arch_emit_prolog):
13893         Convert to new instruction lists.
13894         (insert_after_ins): Delete.
13895         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13896         instruction lists.
13897         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13898         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13899         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13900         mono_emulate_opcode, mono_emit_load_got_addr,
13901         inline_method, mono_method_to_ir, mono_print_bb_code,
13902         print_dfn, decompose_pass, nullify_basic_block,
13903         replace_out_block_in_code, remove_block_if_useless,
13904         merge_basic_blocks, move_basic_block_to_end,
13905         try_unsigned_compare, optimize_branches, mono_print_code,
13906         mini_select_instructions, remove_critical_edges): Likewise.
13907         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13908         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13909         mono_arch_output_basic_block, mono_arch_emit_prolog):
13910         Likewise.
13911         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13912         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13913         mono_arch_output_basic_block): Likewise.
13914         (inst_list_prepend, insert_after_ins): Delete.
13915         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13916         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13917         instruction lists.
13918         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13919         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13920         mono_arch_emit_prolog): Likewise.
13921         * cfold.c (mono_constant_fold): Likewise.
13922         * liveness.c (visit_bb, mono_analyze_liveness,
13923         optimize_initlocals): Likewise.
13924         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13925         * graph.c (mono_draw_code_cfg): Likewise.
13926         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13927         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13928         mono_ssa_cprop): Likewise.
13929         * abcremoval (get_relations_from_previous_bb, process_block):
13930         Likewise.
13931         * local-propagation (mono_cprop_invalidate_values,
13932         mono_local_cprop_bb): Likewise.
13933         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13934         peephole_pass, mono_arch_output_basic_block,
13935         mono_arch_emit_prolog): Likewise.
13936         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13937         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13938         mono_arch_emit_prolog): Likewise.
13939         (insert_after_ins): Delete.
13940         * aliasing.c (print_code_with_aliasing_information,
13941         mono_build_aliasing_information, mono_aliasing_deadce):
13942         Convert to new instruction lists.
13943         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13944         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13945         mono_arch_local_regalloc, mono_arch_output_basic_block):
13946         Likewise.
13947         (insert_after_ins): Delete.
13948         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13949         peephole_pass, mono_arch_output_basic_block): Convert to
13950         new instruction lists.
13951         * mini-codegen (InstList, inst_list_prepend,
13952         insert_after_ins): Delete.
13953         (insert_before_ins, get_register_force_spilling,
13954         get_register_spilling, free_up_ireg, free_up_reg,
13955         create_copy_ins, create_spilled_store, alloc_int_reg,
13956         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13957         to new instruction lists.
13958         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13959         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13960         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13961         (insert_after_ins): Delete.
13962         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13963         mono_arch_local_regalloc, mono_arch_output_basic_block,
13964         mono_arch_call_opcode): Convert to new instruction lists.
13965         (insert_after_ins): Delete.
13966         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13967         peephole_pass, mono_arch_output_basic_block,
13968         mono_arch_emit_prolog): Convert to new instruction lists.
13969
13970 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13973
13974         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13975         Fixes #353182.
13976
13977         * Makefile.am (version.h): Make this work with non-bash shells.
13978
13979 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13980
13981         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13982
13983 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13986         the InitializeArray optimization.
13987
13988 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * mini.c driver.c: Don't include os/gc_wrapper.h.
13991
13992 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13993
13994         * mini.c (print_jit_stats): Print GC statistics if available.
13995
13996 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13997
13998         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13999
14000 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
14003
14004 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
14007         
14008         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14009
14010         * driver.c (mono_main): Ditto.
14011
14012 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14013
14014         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
14015
14016         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
14017         in the vtable can't be encoded.
14018         (compile_method): Ditto.
14019
14020 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14021
14022         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
14023         defined.
14024
14025         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
14026         lmf->rbp.
14027
14028         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14029         the top LMF entry belongs to the current method.
14030
14031         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14032
14033 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14036         
14037         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14038
14039         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14040
14041         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14042
14043         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14044
14045         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14046         implementation.
14047
14048         * basic-float.cs: Add an ulong->double cast test.
14049
14050 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14051
14052         * mini.c (mono_method_to_ir): Fix a warning.
14053
14054 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14055
14056         * mini-ops.h: Add OP_SWITCH.
14057
14058         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14059         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14060
14061 2007-12-11  Geoff Norton  <gnorton@novell.com>
14062
14063         * mini-s390x.c: Minor change to the MAX() define to allow
14064         it to compile with other gcc versions.
14065
14066 2007-12-11  Geoff Norton  <gnorton@novell.com>
14067
14068         * cpu-s390x.md:
14069         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14070
14071 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14072
14073         exceptions-arm.c (mono_arch_get_restore_context): Restore
14074         the frame pointer.
14075
14076         exceptions-arm.c (throw_exception): Save the frame pointer.
14077         This is a partial fix for #323747. Only the client side is
14078         fixed.
14079
14080 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14081
14082         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14083         was using an unrelated variable to log the class which
14084         needed the cctor to be called. This was crashing on arm.
14085
14086 2007-12-09  Robert Jordan  <robertj@gmx.net>
14087
14088         * mini-x86.c (mono_arch_emit_epilog):
14089         Consider all kinds of 64-bit types. Fixes #323114.
14090
14091 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14092
14093         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14094
14095 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14096
14097         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14098
14099 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14100
14101         * mini.c: run type ctor before allocating an object, not only
14102         when running it's constructor method (fixes at least part of bug #342507).
14103
14104 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14105         
14106         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14107         
14108         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14109         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14110         function.
14111
14112         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14113         mono_generic_class_init_trampoline () the same as it is done with the other
14114         trampolines.
14115
14116         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14117         aot-runtime.c aot-compiler.c: Implement AOT support.    
14118
14119 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14120
14121         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14122         build for archs which don't have the vtable trampoline defined
14123         yet.
14124
14125 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14128
14129         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14130
14131         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14132
14133         * tramp-<ARCH>.c: Use the new helper function.
14134
14135 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14136
14137         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14138         trampoline call, which takes a vtable argument.
14139
14140         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14141         OP_TRAMPCALL_VTABLEs like other calls.
14142
14143         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14144         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14145         call.  Implemented a support function which fetches the vtable
14146         from a register set.
14147
14148         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14149         Implemented a generic class init trampoline, using the
14150         OP_TRAMPCALL_VTABLE opcode.
14151
14152         * mini.c: Implemented static field access when sharing generic
14153         code.  This implies initing the class using the new
14154         OP_TRAMPCALL_VTABLE call.
14155
14156 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14157
14158         * mini.c: Don't compile methods with sharing enabled if their
14159         classes are disabled for sharing.
14160
14161 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14164         opcodes. Fixes #346563.
14165
14166         * objects.cs: Add a new test.
14167
14168         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14169
14170         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14171         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14172
14173 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14174
14175         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14176
14177 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14178
14179         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14180         code stream.
14181
14182 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14185
14186         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14187         optimization in the AOT case.
14188         
14189 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14192         
14193         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14194
14195         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14196
14197         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14198
14199         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14200         is created by the inlined delegate ctor.
14201
14202         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14203
14204         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14205
14206 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * cpu-x86.md: Fix the length of ckfinite.
14209
14210 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14211
14212         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14213         
14214         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14215         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14216
14217         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14218
14219         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14220         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14221
14222 2007-11-28  Martin Baulig  <martin@ximian.com>
14223
14224         * mini-x86.c
14225         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14226         after creating the trampoline.
14227
14228 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14229
14230         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14231
14232         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14233         the same version.
14234
14235         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14236         instead of the calling method to help AOT.
14237
14238         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14239
14240 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14241
14242         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14243         is defined.
14244
14245 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14248         
14249         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14250         (encode_method_ref): No need to handle generic method definitions specially.
14251
14252         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14253
14254         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14255         decode_klass_info.
14256
14257         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14258         encode_klass_info.
14259         (compile_method): Enable generic sharing.
14260
14261 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14262
14263         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14264         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14265
14266         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14267         generic code.
14268
14269         * mini-trampolines.c: Fix a warning.
14270
14271         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14272         NEW_PCONST.
14273         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14274         (generic_class_is_reference_type): Remove unused function.
14275
14276         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14277         in the generic vtable trampoline case.
14278
14279         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14280         
14281         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14282         return an AOT method based on a vtable slot.
14283
14284         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14285
14286         * mini.c (mini_get_vtable_trampoline): Export this.
14287
14288 2007-11-22  Martin Baulig  <martin@ximian.com>
14289
14290         * debug-debugger.h
14291         (MonoDebuggerInfo): Move `debugger_version' up.
14292
14293 2007-11-22  Martin Baulig  <martin@ximian.com>
14294
14295         * mini-amd64.c
14296         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14297
14298         * mini-trampolines.c
14299         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14300         after compiling the method.
14301
14302 2007-11-20  Martin Baulig  <martin@ximian.com>
14303
14304         * debug-mini.c
14305         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14306         (mono_debugger_remove_breakpoint): Likewise.
14307         (mono_debugger_check_breakpoints): Likewise.
14308
14309         * debug-debugger.c: Implement the new breakpoint interface here.
14310
14311 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14314         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14315
14316         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14317
14318 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14321
14322         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14323         mini.c.
14324
14325         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14326         mini.c.
14327
14328         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14329         returning a vtype in a register.
14330
14331         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14332         here from the arch specific code.
14333
14334         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14335         mini.c.
14336
14337         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14338         (mono_arch_emit_prolog): Increment maximum prolog size.
14339
14340         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14341         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14342
14343         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14344         MonoGenericSharingContext.
14345
14346         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14347         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14348
14349 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14350
14351         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14352         which extract fields out of the runtime generic context.  Full
14353         sharing of the NEWARR opcode.
14354
14355 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14356
14357         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14358         --enable-minimal=ssa.
14359
14360 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14363         mono_marshal_get_delegate_invoke () signature change.
14364
14365 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14366
14367         * mini.c: Removed the shared context in favor of the generic
14368         sharing context.  Allocate the MonoJitInfo structure with room for
14369         the generic sharing context if it's needed.
14370
14371         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14372         domain-internals.h now.
14373
14374         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14375
14376         * generic-sharing.c: Several changes for working without a shared
14377         context and instead operating on open types instead.
14378
14379 2007-11-12  David S. Miller  <davem@davemloft.net>
14380
14381        * inssel-sparc.brg: Fix double instruction emit.
14382
14383 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14384
14385         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14386         Get/Set/Address methods.
14387         
14388         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14389         mono_marshal_get_delegate_invoke signature change.
14390
14391 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14392
14393         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14394         This can happens with dynamic methods. Fixes the other bug in #322722.
14395
14396 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14397
14398         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14399         BX call sequence.
14400
14401         * mini-arm.c (arm_patch): Implement patching of BX call
14402         sequence. Fixes one of the bugs in #322722.
14403
14404 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14405
14406        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14407        under Linux.  We only need to flush every 32-byte cache line.    
14408
14409 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14410
14411         * mini.c:
14412         move_basic_block_to_end: Add branches when needed, eventually creating
14413         a new BB.
14414         optimize_branches: added a parameter that tells if it's ok to create
14415         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14416         and avoid calling move_basic_block_to_end when it's not ok.
14417         Fixes bug 318677.
14418
14419 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14420
14421         * mini.c: Abort inlining call to InitializeArray if something
14422         looks wrong.  Let the icall handle it, which now has proper safety
14423         checks.
14424
14425 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14426
14427         * mini.c (mono_spill_call): add support for soft-float.
14428
14429         * mini.c (mono_method_to_ir): add support for soft-float
14430         to inlined functions that return float.
14431
14432         * mini.c (mono_method_to_ir): add support for soft-float
14433         to cee_stsfld opcode on float fields.
14434
14435 2007-11-05  Geoff Norton  <gnorton@novell.com>
14436
14437         * mini-x86.h: Fix the structure access for X86 Leopard.
14438
14439
14440 2007-11-05  Martin Baulig  <martin@ximian.com>
14441
14442         * mini-trampolines.c
14443         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14444         after compiling the method to notify the debugger.
14445
14446 2007-11-05  Martin Baulig  <martin@ximian.com>
14447
14448         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14449
14450 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14453         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14454
14455 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14456
14457         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14458         native-to-managed wrappers.
14459         
14460 2007-11-01  Geoff Norton  <gnorton@novell.com>
14461
14462         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14463         members.
14464
14465 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14466
14467         * mini.c, mini-x86.c: when getting back from unmanaged code
14468         to managed via a marshaled delegate we also need to set the
14469         right domain.
14470
14471 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14474         for amd64.
14475
14476 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14477
14478         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14479         let the debugger or other external agents to tell the JIT when
14480         a sw breakpoint has been inserted in the code that the JIT needs
14481         to be able to inspect.
14482
14483 2007-10-31  Martin Baulig  <martin@ximian.com>
14484
14485         * debug-debugger.h
14486         (MonoDebuggerInfo): Remove `runtime_class_init'.
14487
14488 2007-10-30  Martin Baulig  <martin@ximian.com>
14489
14490         * debug-mini.h
14491         (mono_debugger_thread_created): Added `MonoThread *' argument.
14492         (mono_debugger_extended_notification): New public method.
14493         (mono_debugger_trampoline_compiled): New public method.
14494
14495         * debug-mini.c
14496         (MonoDebuggerThreadInfo): Added `thread' and
14497         `extended_notifications' fields.
14498
14499         * debug-debugger.c
14500         (debugger_executable_code_buffer): New static variable.
14501
14502         * debug-debugger.h
14503         (MonoDebuggerInfo): Added `executable_code_buffer',
14504         `executable_code_buffer_size', `breakpoint_info_area',
14505         `breakpoint_table' and `breakpoint_table_size'.
14506
14507 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14508
14509         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14510         that IP  either is an unused value or the vtable pointer. IMT 
14511         calls use vtable + offset now. Reduced by almost half the size
14512         of IMT entries.
14513
14514 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14515
14516         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14517         defines to access param registers. Replace long usage with
14518         gsize as sizeof(long) != sizeof(void*) on Win64.
14519
14520         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14521         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14522         instead of non-existant _GetAddressOfReturnAddress.
14523
14524         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14525         param registers. Save/restore %rdi and %rsi in MonoLMF.
14526
14527         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14528         param registers. Modify (throw_exception) signature to take 
14529         %rdi and %rsi on Win64. 
14530
14531         Code is contributed under MIT/X11 license.
14532
14533 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14534
14535         * helpers.c: unlink debugging output files.
14536
14537 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14538
14539         * mini.c: Move mono_create_ftnptr () to object.c.
14540
14541 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14542
14543         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14544         optional. This function can now be used to disassemble code generated
14545         outside the JIT such as trampolines and IMT thunks.
14546
14547         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14548
14549         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14550         vtable pointer from a ldr instruction.
14551
14552         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14553         new IMT call sequence.
14554
14555         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14556         call sequence for interface invocations.
14557
14558         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14559         for imt support. This function is empty since IMT on ARM requires no
14560         special handling on the IR side.
14561
14562         * mini-arm.c (mono_arch_find_imt_method): added, required for
14563         imt support.
14564
14565         * mini-arm.c (mono_arch_find_this_argument): added, required
14566         for imt support.
14567
14568         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14569         a ldr instruction to load a value stored in the code stream.
14570
14571         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14572         for imt support.
14573
14574
14575 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14576
14577         * mini.c (mini_init): Install the jump trampoline callback.
14578
14579 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14580
14581         * mini-trampolines.c: handle synchronized methods with the common
14582         vtable trampoline (bug #335601).
14583
14584 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14585
14586         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14587
14588         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14589         64 bit platforms.
14590
14591         * mini-ia64.h mini-ia64.c: Add support for IMT.
14592
14593         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14594         prolog. Fixes #331958.
14595
14596 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14597
14598         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14599
14600 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14601
14602         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14603         trampoline.
14604
14605 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14606
14607         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14608         trampoline.
14609
14610 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14611
14612         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14613         trampoline.
14614
14615 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * mini-trampolines.c: changed the magic rampoline to understand
14618         the common vtable trampoline method: the method to invoke is
14619         determined by the vtable displacement of the call.
14620
14621 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14622
14623         * mini.c, mini.h: register the common vtable trampoline if the
14624         architecture supports it.
14625
14626 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14627
14628         * cpu-amd64.md: use the correct max length for tls_get.
14629
14630 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14631
14632         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14633         CEE_STELEM_ANY. Fixes #333696.
14634
14635 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14636
14637         * exceptions-x86.c: provide more graceful handling of the case where
14638         we followed a bogus function pointer from managed code (bug #332866).
14639
14640 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14641
14642         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14643         replaces the generic_shared flag and will carry more information
14644         in the future.
14645
14646         * generic-sharing.c: Added mini_type_stack_size() which allows
14647         allows open types if given a generic sharing context.
14648         mini_get_basic_type_from_generic() takes a
14649         MonoGenericSharingContext* instead of a MonoCompile* now.
14650
14651         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14652         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14653         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14654         changes above.  Just passing arguments through to the right
14655         places.
14656
14657 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini-arm.c: unify the call emission to emit_code_seq().
14660
14661 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14662
14663         * tramp-arm.c: reduced the trampoline size.
14664
14665 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14666
14667         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14668         variable handling out of arch-specific code.
14669
14670 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14671
14672         * mini-arm.c: implemented fast delegate dispatch.
14673
14674 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14677         that fp elimination is turned off if the space required by locals is too
14678         big. Fixes #331958.
14679
14680 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14681
14682         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14683         ARM to the new style trampoline.
14684
14685 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14688
14689         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14690
14691 2007-10-09  Martin Baulig  <martin@ximian.com>
14692
14693         * debug-debugger.h
14694         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14695         `field_info_offset_offset'.     
14696
14697 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14698
14699         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14700         removed more internal usage of the r11 register and made it available
14701         to the register allocator.
14702
14703 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14704
14705         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14706         when sharing generics and treat type variables as references.
14707
14708 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14709
14710         * mini-ppc.c: started removing the internal uses of register r11
14711         to eventually allow the register allocator to manage it as an
14712         additional available register.
14713
14714 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14715
14716         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14717
14718 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14719
14720         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14721         specific trampolines as they are not performance critical as a jump
14722         target (maybe align as before only for AOT code?). This saves about
14723         200 KB of native code on x86 for monodevelop startup.
14724
14725 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14726
14727         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14728         monodevelop startup.
14729
14730 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14731
14732         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14733
14734         * mini-sparc.h mini-sparc.c: Implement IMT support.
14735
14736         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14737         its smaller and doesn't clobber sparc_g1.
14738
14739         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14740
14741 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14744
14745 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14746
14747         * mini-ppc.c: implemented fast delegate invocation.
14748
14749 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14750
14751         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14752
14753 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14754
14755         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14756         code to the new style trampoline in preparation for IMT support.
14757
14758 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14759
14760         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14761         systems already. This also reduces the specific trampiline sizes and
14762         prepares for the use of r12 as the IMT identifier register.
14763
14764 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini-mips.h: endianess fix (simplified from a patch by
14767         Thomas Kunze <thommy@tabao.de>, bug #323737).
14768
14769 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14770
14771         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14772         to access ucontext fields and enable netbsd support
14773         (partially from Magnus Henoch <mange@freemail.hu>).
14774
14775 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14776
14777         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14778         use the preprocessor from the CPP env var if it is set.
14779
14780 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14781
14782         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14783         code, before interface_offset gets used.
14784
14785 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14788         mono_class_setup_vtable () before accessing klass->vtable.
14789
14790 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14791
14792         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14793         hackish.
14794
14795 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14796
14797         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14798         IMT slots (this saves hundreds of KB of memory in programs like
14799         IronPython and Monodevelop).
14800
14801 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14802
14803         * mini.c: print the delegate counter.
14804
14805 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14806
14807         * mini-x86.c: make it easier to enable the debugging code for IMT
14808         slots.
14809
14810 2007-09-28  Martin Baulig  <martin@ximian.com>
14811
14812         * debug-debugger.h
14813         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14814         `mono_method_klass_offset' and `mono_method_token_offset'.
14815
14816 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14817
14818         * mini.c: First generics sharing implementation.  Can only share
14819         in very simple cases.  If sharing doesn't work it falls back to
14820         dedicated compilation.
14821
14822         * mini.h: Flag in MonoCompile to specify whether generic
14823         compilation is shared.  Flags enum for marking which generic inst
14824         of a context is used.  Prototypes for helper functions.
14825
14826         * generic-sharing.c: Helper functions for generic method sharing.
14827
14828         * optflags-def.h: Optimization flag (gshared) for enabling generic
14829         method sharing added.
14830
14831         * Makefile.am: generic-sharing.c added.
14832
14833 2007-09-19 Daniel Nauck <dna@mono-project.de>
14834
14835         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14836
14837 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14838         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14839         fixes bug 325507.
14840
14841 2007-09-19  Martin Baulig  <martin@ximian.com>
14842
14843         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14844         mono_debug_cleanup() is now part of mono_cleanup().
14845
14846 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * driver.c (mono_main): Fix a warning.
14849
14850 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * aot-compiler.c: Optimize various parts when processing large assemblies.
14853         Fixes ##325568.
14854
14855         * mini.c (mono_patch_info_hash): Improve hash function.
14856
14857 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14858
14859         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14860         
14861         Code is contributed under MIT/X11 license.
14862
14863 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14864
14865         * mini.c (mini_init): Fix a leak.
14866
14867         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14868
14869 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14872
14873 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14874
14875         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14876
14877 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14878
14879         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14880         variance tests.
14881
14882         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14883
14884         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14885
14886         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14887
14888         * aot-runtime.c (decode_patch_info): Ditto.
14889
14890 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14891
14892         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14893         static case. Cache delegates in architecture specific code, 
14894         based on number of parameters.
14895         
14896         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14897         in architecture specific code, based on number of parameters.
14898         
14899         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14900         caching happen in architecture specific code now.
14901         
14902         Code is contributed under MIT/X11 license.
14903
14904 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14905
14906         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14907         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14908         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14909
14910         Code is contributed under MIT/X11 license.
14911
14912 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14913         * mini.c: (mono_thread_abort) Fixed bug #82416.
14914
14915 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14916
14917         * mini.: hook the new managed GC allocation feature into the JIT.
14918
14919 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14920
14921         * mini.c: implementation for the new runtime tls opcode.
14922
14923 2007-09-11  Martin Baulig  <martin@ximian.com>
14924
14925         * debug-debugger.h
14926         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14927         `mono_method_inflated_offset'.
14928
14929 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14930
14931         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14932         async exceptions into a method.
14933
14934         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14935         purpose of testing whenever the unwinder works at every instruction.
14936
14937 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14938
14939         * mini.c: check accessibility of method used in ldftn (fixes
14940         bug #82635).
14941
14942 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14945
14946         * inssel.brg: Fix a warning.
14947
14948 2007-09-03  Martin Baulig  <martin@ximian.com>
14949
14950         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14951         now takes the `main_method' as argument.
14952
14953 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14954
14955         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14956
14957 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14958
14959         * driver.c: include the cil-coff.h header on Windows.
14960         
14961         Code is contributed under MIT/X11 license.
14962
14963 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14964
14965         * mini.c, driver.c: don't include the cil-coff.h header.
14966
14967 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14968
14969         * mini.c: flag places that needs fixes fo soft-float support.
14970
14971 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14972
14973         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14974         endian systems (partially from Dean Jenkins, bug #81924).
14975
14976 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14977
14978         * mini.c (check_linkdemand): Remove embedded reference object in
14979         call to LinkDemandSecurityException.
14980         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14981         with an IntPtr instead of a reference object.
14982
14983 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini.c (handle_initobj): Handle alignment properly.
14986
14987         * inssel.brg (mini_emit_memset): Ditto. 
14988
14989         * inssel.brg (mini_emit_memcpy): Ditto. 
14990
14991         * inssel-sparc.brg: Ditto.              
14992
14993         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14994
14995 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14998         exceptions raised in unmanaged code. Fixes part of #82594.
14999
15000 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15001
15002         * mini.c (mono_method_to_ir), declsec.c
15003         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
15004
15005 2007-08-22  Martin Baulig  <martin@ximian.com>
15006
15007         * debug-mini.h
15008         (MonoDebuggerThreadInfo): New typedef.
15009         (mono_debugger_thread_table): New global variable.
15010         (mono_debugger_thread_created): New public function.
15011         (mono_debugger_thread_cleanup): New public function.
15012
15013         * debug-debugger.h
15014         (MonoDebuggerInfo):
15015         - removed `get_current_thread' and `lookup_assembly'.
15016         - removed `data_table'.
15017         - added `thread_table'.
15018
15019         * mini.c
15020         (mono_thread_start_cb): Call mono_debugger_thread_created().
15021         (mono_thread_attach_cb): Likewise.
15022         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
15023         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
15024         initial domain.
15025
15026         * driver.c (mono_main): Move mono_debug_init() up, before calling
15027         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15028
15029 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15030
15031         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15032         together when passing several arguments of type double (gives a small
15033         speedup and saves a few bytes of generated code).
15034
15035 2007-08-20  Jb Evain  <jbevain@novell.com>
15036
15037         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15038
15039 2007-08-20  Jb Evain  <jbevain@novell.com>
15040
15041         * mini.c (mono_method_to_ir): throw MethodAccessException
15042         and FieldAccessException instead of InvalidProgramException.
15043
15044 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15045
15046         * mini.c: CoreCLR security checks.
15047
15048         * mini.h: Removed MonoSecurityMode (moved to
15049         metadata/security-manager.h) and mono_security_mode global var
15050         (replaced by set/get functions in security-manager.h).
15051
15052         * driver.c: Added "core-clr-test" security mode for testing.  Used
15053         set-function for setting security mode.
15054
15055 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15056
15057         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15058         the new jit_info_table.
15059
15060         * driver.c: Test code for the new jit_info_table (enabled by the
15061         define MONO_JIT_INFO_TABLE_TEST).
15062
15063 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15064
15065         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15066         detection of call <REG> instruction sequence. Fixes build on freebsd.
15067
15068 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15069
15070         * mini-exceptions.c: Fix a warning.
15071
15072 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15075         stack overflow handling code on amd64 too.
15076
15077         * mini-exceptions.c (mono_setup_altstack): Make this use 
15078         mono_thread_get_stack_bounds ().
15079
15080         * mini-x86.h: Disable sigaltstack on solaris x86.
15081
15082 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15083
15084         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15085
15086 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15087
15088         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15089
15090 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15091
15092         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15093
15094         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15095
15096 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15097
15098         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15099         due to alignment.
15100
15101 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15102
15103         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15104         to be emitted (bug #82281).
15105
15106 2007-08-01  Martin Baulig  <martin@ximian.com>
15107
15108         Merged the `debugger-dublin' branch.
15109
15110         * debug-debugger.h (MonoDebuggerInfo):
15111         Removed the `old_*' compatibility entries.
15112         Added `debugger_version' and `data_table'.
15113         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15114         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15115
15116         * debug-mini.c
15117         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15118         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15119         instead of a `gconstpointer'.
15120         (mono_debugger_insert_method_breakpoint): Return a
15121         `MonoDebugMethodAddressList *'.
15122
15123 2007-06-28  Martin Baulig  <martin@ximian.com>
15124
15125         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15126
15127 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15128
15129         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15130         __builtin_frame_address () since it is broken on older gcc versions.
15131
15132 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15133
15134         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15135         on the stack overflow handling and made the managed stack overflows
15136         catchable in most cases using soft guard pages.
15137         * exceptions-x86.c: added code to restore the protection in the soft
15138         guard pages at the end of exception handling.
15139
15140 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15143
15144 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15145
15146         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15147         exception handling.
15148
15149 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15152         signal handling support until it has been ported to the new mechanism.
15153         * mini.c: fixed stack overflow detection and use the new
15154         architecture code  to handle signals on the altstack.
15155
15156 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15157
15158         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15159         stack overflows on the alt stack.
15160
15161 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15162
15163         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15164         stack overflows on the alt stack.
15165
15166 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15167
15168         * exceptions-ppc.c: cleanup preparing for altstack support.
15169
15170 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15171
15172         * exceptions-arm.c: cleanup preparing for altstack support.
15173
15174 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15175
15176         * mini.c (print_jit_stats): Output hazard pointer stats.
15177
15178 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15179
15180         * driver.c, mini.c: Replaced security mode flags with a single
15181         enum variable.
15182
15183 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15186
15187 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15188
15189         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15190         (which doesn't do anything yet) for activating Core CLR
15191         (Silverlight) security.
15192
15193 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15194
15195         * mini-codegen.c: work around a possible gcc bug on arm.
15196
15197 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15198
15199         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15200         message for platforms that don't support AOT compilation.
15201
15202 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15203
15204         * mini.h, mini.c, driver.c: temporary smcs hack.
15205
15206 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15207
15208         * mini-arm.h, mini-arm.c: arm EABI fixes.
15209
15210 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15213         case.
15214
15215         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15216         trampolines taking a method argument.
15217
15218         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15219
15220         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15221         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15222
15223         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15224         JIT compilation throws an exception. Fixes #82050.
15225
15226 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15227
15228         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15229         with the MONO_EXCEPTION_ defines.
15230
15231 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15232
15233         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15234         #82117.
15235         
15236         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15237         the cause of an assertion.
15238
15239 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15240
15241         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15242         removed.
15243
15244 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15245
15246         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15247         assert. Should fix #82103.
15248
15249 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15252         here too. Fixes #82095.
15253
15254         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15255         addresses.
15256
15257         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15258
15259         * mini-amd64.h: Enable IMT for amd64.
15260         
15261         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15262
15263 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15266
15267 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15268
15269         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15270         as soon as check_linkdemand sets an exception_type.
15271
15272 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15273
15274         * mini-x86.c: fixed offsets for IMT call sequence.
15275         * mini-x86.h: enable IMT again.
15276
15277 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15278
15279         * trace.c (mono_trace_enter_method): Decode MonoType too.
15280
15281         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15282
15283         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15284
15285         * mini-amd64.c: Add preliminary IMT implementation.
15286         
15287 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15290         understand the new IMT-base interface invocation (thanks to
15291         Daniel Nauck for the report and the remote debugging session).
15292
15293 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15294
15295         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15296
15297 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15298
15299         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15300
15301 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15302
15303         * mini-trampolines.c: implement AOT IMT support.
15304         * mini-x86.h: enable IMT support for wider testing.
15305
15306 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * inssel.brg (emit_imt_argument): Add aot support here.
15309
15310         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15311
15312 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15313
15314         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15315         of the IMT implementation, partially from massi, with my
15316         implementation of the bsearch sequence. Disabled by default until
15317         the AOT code is implemented.
15318
15319 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15322
15323         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15324
15325 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15326
15327         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15328         arch-independent IMT JIT code from Massimiliano
15329         Mantione (massi@ximian.com) with small cleanups from me.
15330
15331 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15332
15333         * Makefile.am: fix svn invocation to get the svn revision to be
15334         independent of the local language (build fix).
15335
15336 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15337
15338         * mini.c (inline_method): Reset cfg->exception_type if the
15339         inlining is aborted.  Fixes: 82049.
15340
15341 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15342
15343         * mini.c: remove assert from exception handling code when exception_ptr
15344         is not set.
15345
15346 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15347
15348         * mini.c (mono_codegen): Add an assert.
15349
15350         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15351         enter and leave code.
15352         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15353
15354 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15355
15356         * mini-ppc.c: fixed memory corruption for localloc(0)
15357         (bug #81852).
15358
15359 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15360         
15361         * mini.c: Fix warnings.
15362
15363 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15364
15365         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15366         to emit better double->int conversions.
15367
15368 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15369
15370         * mini.c: the provided Min/Max optimizations are valid for unisgned
15371         ints.
15372
15373 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15374
15375         * 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
15376
15377 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15378
15379         * mini.c (mono_running_on_valgrind): Add support for reporting the
15380         method and  its boundaries to valgrind.
15381
15382 2007-06-28  Martin Baulig  <martin@ximian.com>
15383
15384         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15385
15386 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15387
15388         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15389
15390         * generic.2.cs: Add new test case.
15391
15392 2007-06-25  Martin Baulig  <martin@ximian.com>
15393
15394         Merged the `debugger-dublin' branch.
15395
15396         * debug-mini.c
15397         (mono_debugger_insert_method_breakpoint): New public method.
15398         (mono_debugger_remove_method_breakpoint): Likewise.
15399         (mono_debugger_check_breakpoints): New static method.
15400         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15401
15402         * debug-debugger.h (MonoDebuggerInfo):
15403         Renamed (to keep backward compatibility in the vtable):
15404         `insert_breakpoint' -> `old_insert_breakpoint'.
15405         `remove_breakpoint' -> `old_remove_breakpoint'.
15406         `create_string' -> `old_create_string'.
15407         `lookup_class' -> `old_lookup_class'.
15408         `lookup_type' -> removed; changed into a dummy field.
15409         `lookup_assembly' -> `old_lookup_assembly'.
15410         Added (same functionality, but different signature):
15411         `create_string', `lookup_class', `lookup_assembly'
15412         Added new:
15413         `get_method_addr_or_bpt', `remove_method_breakpoint',
15414         `runtime_class_init'.
15415
15416         * debug-debugger.c: Merged the `debugger-dublin' branch.
15417
15418 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15419
15420         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15421         well.
15422         (peephole_pass): Likewise.
15423
15424 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15425
15426         * driver.c: hopefully make setaffinity work also for ancient
15427         versions of linux.
15428
15429 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15430
15431         * driver.c : win32 build fix.
15432
15433 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15434
15435         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15436         processor if it is set.
15437
15438 2007-06-21  Martin Baulig  <martin@ximian.com>
15439
15440         * debug-mini.h: New file.
15441
15442         * debug-mini.c
15443         (mono_debugger_insert_breakpoint_full): Moved here from
15444         ../metadata/mono-debug-debugger.c.
15445         (mono_debugger_remove_breakpoint): Likewise.
15446         (mono_debugger_breakpoint_callback): Likewise.
15447
15448 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15449
15450         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15451         changes in MonoGenericClass.
15452
15453 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15454
15455         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15456
15457 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15458
15459         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15460         removal of MonoGenericMethod.
15461
15462 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15463
15464         * mini-exceptions.c: hooks for the exception events profiling API.
15465
15466 2007-06-14  Randolph Chung  <tausq@debian.org>
15467
15468         * Makefile.ma: Add hppa target.
15469         * mini-arch.h: Include mini-hppa.h
15470         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15471         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15472         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15473
15474 2007-06-14  Randolph Chung  <tausq@debian.org>
15475
15476         * inssel.brg: Add rules for "chained" compare-branch operations so that
15477         a single compare op can affect multiple branches.  Adjust cost for
15478         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15479         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15480         cost for some rules so that they can more easily be overridden by
15481         per-arch rules (with fixes from lupus).
15482         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15483
15484 2007-06-13  Randolph Chung  <tausq@debian.org>
15485
15486         * mini-ops.h: Reorder branch ops so that they match the order of the
15487         corresponding CEE_* ops.  The code expects them this way.
15488         Add new ops for HPPA target.
15489         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15490
15491 2007-06-13  Randolph Chung  <tausq@debian.org>
15492
15493         * mini-exceptions.c: Handle cases where the stack grows towards
15494         larger addresses.
15495         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15496
15497 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15498
15499         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15500         counter.
15501         * driver.c: explain where a non-matching corlib is found.
15502
15503 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15504
15505         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15506
15507 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15508
15509         * mini-exceptions.c: Generate a method profile leave event during
15510         an exception to ensure that the profiler gets notified.
15511
15512 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15513
15514         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15515         branch.
15516
15517         * cpu-amd64.md: Add long_and/or/xor opcodes.
15518
15519 2007-06-06  Wade Berrier  <wberrier@novell.com>
15520
15521         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15522         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15523         length of instruction shr_imm (expected 8, got 10)
15524
15525 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15526
15527         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15528
15529 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15530
15531         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15532         MonoInternalHashTable again (fixed bug in the internal hash table
15533         code).
15534
15535 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15536
15537         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15538         Have to figure out what makes it crash the SWF regression.
15539
15540 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15541
15542         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15543
15544 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15545
15546         * mini.c: optimize out the type check when storing null in a
15547         reference array.
15548
15549 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15550
15551         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15552         MonoInternalHashTable.
15553
15554 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15557         signed integer methods.
15558
15559 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15562         permanently since the current approach doesn't work.
15563
15564 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15565
15566         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15567         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15568
15569 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15570
15571         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15572         the sreg2==rdx case.
15573         
15574         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15575         account if it contains a rex prefix.
15576         (peephole_pass): Handle OP_FMOVE as well.
15577
15578 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15579
15580         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15581         as it causes regressions.
15582
15583 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15584
15585         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15586         static case as well.
15587
15588         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15589
15590         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15591         (mono_arch_get_this_arg_from_call): Ditto.
15592
15593         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15594
15595         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15596         invoke_impl field.
15597
15598         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15599         (mono_arch_get_this_arg_from_call): Ditto.
15600
15601         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15602         
15603         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15604         try to create optimized invoke code and use that for further invocations. 
15605         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15606
15607         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15608
15609 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15610
15611         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15612         sealed classes or methods.
15613         *devirtualization.cs: tests for the new optimization
15614
15615 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15616
15617         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15618         by the update_volatile () function.
15619
15620 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15621
15622         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15623         require it.
15624
15625         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15626
15627 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15628
15629         * mini.c: Add configure checks for header files.
15630         * mini-x86.c: Add configure checks for header files.
15631         * trace.c: Add configure checks for header files.
15632         * aot-runtime.c: Add configure checks for header files.
15633         * aot-compiler.c: Add configure checks for header files.
15634         * driver.c: Add configure checks for header files.
15635         * mini-codegen.c: Add configure checks for header files.
15636         
15637         Code is contributed under MIT/X11 license.
15638
15639 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15642         icompare_imm -128 + op_iclt. Fixes #81703.
15643
15644 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15647
15648 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15649
15650         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15651         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15652         so that all isinst checks now use "interface_bitmap".
15653
15654 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15655
15656         * cpu-amd64.md (jmp): Fix a warning.
15657
15658         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15659
15660         * basic.cs: Add new regression test.
15661
15662         * basic.cs: Remove test which is now in basic-long.cs.
15663
15664         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15665
15666         * basic-long.cs: Add new test.
15667         
15668 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15669
15670         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15671
15672 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15673
15674         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15675
15676         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15677         places.
15678         
15679         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15680         throwing code a bit.
15681
15682         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15683         the exception throwing code a bit.
15684
15685         * mini-x86.c (get_call_info): Allocate result from a mempool.
15686
15687 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15690
15691         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15692
15693         * mini.h (MonoCompile): Add 'token_info_hash' field.
15694
15695         * mini.c: Save token->method associations during compilation so the AOT 
15696         compiler can use it.
15697         
15698         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15699         which reference generic classes and methods.
15700
15701 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15704
15705         * aot-compiler.c (compile_method): Fix a typo in a comment.
15706
15707         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15708
15709         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15710         everything generic.
15711
15712         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15713
15714 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15715
15716         * mini.h (MonoCompile): Add 'args' field.
15717
15718         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15719         into cfg->args.
15720
15721         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15722
15723 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15724
15725         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15726
15727         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15728
15729         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15730         opcodes for some opcodes.
15731
15732         * mini.h *.brg *.c: Use the new opcodes.
15733
15734 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15735
15736         * mini.h: Bumped aot revision.
15737
15738         * inssel.brg: modified code generation of type checks for interfaces
15739         to use the new "MonoClass.interface_bitmap" instead of the old
15740         "MonoClass.interface_offsets".
15741
15742 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15745
15746 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15749         64 bit platforms.
15750
15751 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15752
15753         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15754
15755 2007-04-27  Wade Berrier  <wberrier@novell.com>
15756
15757         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15758         mini.h) to fix build.
15759
15760 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15763         
15764         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15765         causes the corlib unit tests to fail.
15766
15767 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15768
15769         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15770
15771         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15772
15773         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15774         opcodes to the comparison relations.
15775
15776         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15777         opcodes to their types.
15778         
15779         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15780
15781         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15782         it in cfg->arch.cinfo.
15783
15784         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15785
15786         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15787         cfg->cil_offset_to_bb.
15788
15789 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15790
15791         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15792         created becase of initlocals.
15793
15794 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15795
15796         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15797         Sergey Tikhonov <tsv@solvo.ru>.
15798
15799 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15800
15801         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15802
15803 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15804
15805         * cpu-s390.md (break): Correct the length of break instruction.
15806
15807 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15808
15809         * mini.c: fix a couple of soft-float issues and comments.
15810
15811 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15812
15813         * trace.c (is_filenamechar): - is also a filename char.
15814
15815 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15816
15817         * mini-s390.c: Correct checking for enum type in return value processing.
15818
15819 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15820
15821         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15822         (version.h): Makefile is in the build directory.
15823
15824 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15825
15826         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15827
15828 2007-04-11  Martin Baulig  <martin@ximian.com>
15829
15830         * mini.c (can_access_member): Fix handling of generic classes;
15831         fixes #81259.
15832
15833 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15834
15835         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15836
15837 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15838
15839         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15840
15841 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini-codegen.c: make sure the right spill amount is
15844         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15845
15846 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15847
15848         * mini-ppc.c: fixes for the fp_branch_nan test.
15849
15850 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15851
15852         * basic.cs: Comment out new test which still fails on ia64.
15853
15854 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15855
15856         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15857
15858 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15859
15860         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15861
15862 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15863
15864         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15865         on 64 bit machines. Fixes part of #80738.
15866
15867         * basic.cs: Add regression test.
15868
15869 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * inssel.brg basic.cs: Revert previous change to fix build.
15872
15873         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15874         platforms.
15875         
15876         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15877
15878         * basic.cs: Add new regression test.
15879
15880 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15883         many arguments.
15884
15885 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15886
15887         * cpu-s390x.md: Correct length of break instruction.
15888
15889 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15890
15891         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15892         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15893
15894 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15895
15896         * *.c: Begin WIN64 port.
15897         * mini.c:  Use correct register in profiler.
15898         * mini-amd64.c: No inline assembly on Win64.
15899         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15900         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15901         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15902         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15903         mono_arch_ip_from_context for Win64.
15904         
15905         Contributed under MIT/X11 license.
15906
15907 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15908
15909         * exceptions-amd64.c (seh_handler): Ditto.
15910
15911         * exceptions-x86.c (seh_handler): Fix a memory leak.
15912
15913 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15914
15915         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15916         mini-s390x.c: fixed peephole optimizations to deal
15917         correctly with 1 and 2 byte reload avoidance.
15918
15919 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15920
15921         * cpu-s390.md, cpu-s390x.md: update localloc length.
15922
15923 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15924
15925         * cpu-g4.md: added missing descriptions.
15926
15927 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15928
15929         *  Makefile.am: Add support so the tail tests are not executed on
15930         PowerPC as that is a known limitation of the PowerPC port.
15931
15932 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15933
15934         * runmdesc.bat:  Move to msvc directory.
15935         
15936 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15937
15938         * runmdesc.bat:  Run executable that was produced by the current
15939         target and sent via an argument.
15940         
15941 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15942
15943         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15944         #81102.
15945
15946         * generics.2.cs: Add regression test.
15947
15948 2007-03-09  Wade berrier  <wberrier@novell.com>
15949
15950         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15951
15952 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15955         AOT code depends on this.
15956
15957 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15958
15959         * mini.c: more precise tracking of types in the eval stack
15960         (part of fix for bug #81044).
15961
15962 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15963
15964         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15965
15966         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15967
15968 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15971
15972         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15973
15974 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15977         a pointer on 64 bit systems. Fixes #80190.
15978
15979         * iltests.il: Add new regression test.
15980
15981 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15982
15983         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15984
15985 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15986
15987         * trace.c: Remove an erroneous alignemnt check when tracing.
15988           Fixes --trace on OSX86.
15989
15990 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15991
15992         * mini-$(arch).h: initialize SP in context for all the archs.
15993
15994 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15995
15996         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15997         regressions in the thread tests.
15998
15999 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
16000
16001         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
16002         - fixed implementation of LOCALLOC opcode
16003         - implemented non-un compare for floats
16004         - code cleanup
16005         - implementation of FDIV and CKFINITE opcodes
16006         - fixes for latest mono updates
16007         - additional arch opcodes
16008
16009 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16010
16011         * Makefile.am: simplify and merge rules for cross-compilation.
16012
16013 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
16014
16015         * local-propagation.c: Actually *apply* the fix for bug 80591...
16016
16017 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
16018
16019         * mini-exceptions.c: backuot part of the last change
16020         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
16021
16022 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
16023         * inssel.brg: Fix bug 59286.
16024
16025
16026 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
16027
16028         * mini-exceptions.c: patch from Zoltan to correctly check for
16029         stack boundaries (using the stack register, not the frame register),
16030         fixes bugs #80724, #79717.
16031
16032 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16033
16034         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16035         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16036
16037         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16038         presence of frame pointer elimination.
16039
16040 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16041         
16042         * mini-x86.h: NetBSD UCONTEX_REG defines.
16043
16044 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16045
16046         * inssel-amd64.brg: Fix amd64 build.
16047
16048 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16049
16050         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16051         on amd64.
16052
16053 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16054
16055         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16056         ends.
16057
16058         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16059
16060 2007-01-30 Mark Mason <mason@broadcom.com>
16061
16062            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16063            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16064            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16065            beginning support for CEE_JMP [not quite working yet]
16066            * tramp-mips.c: LMF handling now works
16067         
16068 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16069
16070         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16071
16072         * mini.h (NULLIFY_INS): New macro.
16073
16074 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16075
16076         * mini.c: statistical profiler fix for windows, patch
16077         from Tor Lillqvist (tml@novell.com).
16078
16079 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16080         * local-propagation.c: Fix bug 80591.
16081
16082 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16083
16084         * Makefile.am: put back the --export-dynamic option as with
16085         the previous gmodule flags (thanks to Robert Jordan).
16086
16087 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16088
16089         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16090
16091         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16092         simplify and speed up the local register allocator. Also rename some fields
16093         like iassign->vassign.
16094         
16095         * regalloc.c: Remove some functions which are no longer used since their
16096         inlined version is in mini-codegen.c.
16097         
16098         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16099
16100         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16101
16102 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16103
16104         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16105         narrowing. Fixes #80622.
16106
16107         * iltests.il: Add new regresssion test. 
16108
16109 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16110
16111         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16112         debug-debugger.c, debug-debugger.h: warning fixes.
16113         * driver.c: updated copyright year and made it fit in one line.
16114
16115 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16116
16117         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16118
16119 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16120
16121         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16122
16123         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16124
16125         * iltests.il: Add new test for bug #80507.
16126
16127 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16128
16129         * mini-arm.h: use soft-float also on vfp for now.
16130
16131 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16132
16133         * mini.c: fix some more soft-float issues.
16134
16135 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16136
16137         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16138
16139 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16140         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16141         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16142         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16143
16144 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16145
16146         * mini-arm.c: typo fix.
16147
16148 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16149
16150         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16151
16152 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16153
16154         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16155         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16156
16157         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16158
16159         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16160
16161         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16162         
16163         * inssel.brg: Fix a warning.
16164
16165         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16166
16167         * abcremoval.c ssa.c ssapre.c: Update after this change.
16168         
16169         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16170
16171         * dominators.c (df_set): Use mono_bitset_union_fast.    
16172
16173 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16174
16175         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16176         mini-codegen.c: reduce relocations and memory usage for the cpu
16177         description.
16178
16179 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16180
16181         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16182
16183         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16184         to reduce their size.
16185
16186 2007-01-19 Mark Mason <mason@broadcom.com>
16187
16188         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16189         * mini-mips.c: more configuration macros, support long conditional branches, additional
16190         asserts, fix epilog instrumentation.
16191         * mini-mips.h: use standard stack walk
16192         * cpu-mips.md: increase size of div, rem and conditional branches
16193         
16194 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16195
16196         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16197         to cpu spec data.
16198
16199 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16200
16201         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16202         (compile_method): Ditto.
16203
16204         * aot-runtime.c (decode_klass_info): Ditto.
16205
16206         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16207         needed by the code generated by inssel.brg. Also fix a warning.
16208
16209 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16210
16211         * mini.c: deal with enums that become genericinsts by
16212         being nested in a generic class (bug #79956).
16213
16214 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini.c: match the generic definition to check for
16217         private access with generic types (bug #78431).
16218
16219 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16220
16221         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16222         to make life easier for people cross-compiling that insist on not
16223         using scratchbox.
16224
16225 2007-01-17 Mark Mason <mason@broadcom.com>
16226
16227         * inssel-long.brg: patch to deal with mips missing flags
16228         * inssel-long32-mips.brg: implement overflow checks
16229         * insset-mips.brg: implement overflow checks
16230         * mini-mips.h: implement conditional exception handling
16231         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16232           Remove unused code, minor cleanups.
16233         * exceptions-mips.c: minor cleanups
16234         * mini-ops.h: add mips conditional exception ops
16235         * cpu-mips.md: add mips conditional exception ops
16236
16237         
16238 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16239
16240         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16241         to deal with mips missing of flags.
16242
16243 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16244
16245         * exceptions-ppc.c: execute fault handlers.
16246
16247 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16248
16249         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16250
16251 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16252
16253         * mini.c: handle also floating point values in initialize_array.
16254
16255 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16256
16257         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16258         array initialization and make it conditional on the intrins option.
16259
16260 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16261
16262         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16263         relocations and put the patch info names close to the enum definition.
16264
16265 2007-01-15 Mark Mason <mason@broadcom.com>
16266
16267         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16268
16269 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16270
16271         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16272
16273 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16274
16275         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16276
16277 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16278
16279         * Makefile.am: distribute the mips sources.
16280
16281 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16282
16283         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16284         directly.
16285
16286 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16287
16288         * cpu-x86.md: back out for now as this triggers other regressions.
16289
16290 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16291
16292         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16293         to eax:edx, so ecx can't get allocated to them (bug #80489).
16294
16295 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16296
16297         * mini.c, mini-exceptions.c: enabled running fault handlers
16298         (bug #80469).
16299
16300 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16301
16302         * driver.c: If nothing fail, do not use the string "failed",
16303         because it makes it very annoying to view test result logs on the
16304         web. 
16305
16306 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16307
16308         * debug-debugger.c (mono_debugger_main): Rename "main" to
16309         "main_method" to prevent a warning.
16310
16311         Remove a warning for unused field.
16312
16313 2006-12-28  Martin Baulig  <martin@ximian.com>
16314
16315         * debug-debugger.c
16316         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16317
16318 2006-12-22  Martin Baulig  <martin@ximian.com>
16319
16320         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16321         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16322         seperate `.mdb_debug_info' section, so we can access it from the
16323         debugger even if the binary is stripped.
16324
16325         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16326         from the `.mdb_debug_info' here to prevent the linker from
16327         removing that section.
16328
16329         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16330         mdb-debug-info64.s.
16331
16332 2006-12-19  Robert Jordan  <robertj@gmx.net>
16333
16334         * mini-x86: enable the code to return small structures in
16335         registers for FreeBSD as well. Fixes bug #80278.
16336         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16337
16338 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16339
16340         * mini-x86.c: align the stack when calling the profiler
16341         function instrumenting the prolog (on OSX).
16342
16343 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16344
16345         * mini.c: emit a break opcode where Debugger.Break () is called.
16346
16347 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16348
16349         * mini.c (mono_method_to_ir): Provide useful information on this
16350         assert, to prevent others from debugging like I did.
16351
16352 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16353
16354         * mini.c: enable code which was incorrectly commented
16355         (bug #80235).
16356
16357 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini-x86.c: enable on OSX, too, the code to return small
16360         structures in registers.
16361
16362 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16363
16364         * mini-x86.c: remove the use of the dynamic code manager here, too.
16365
16366 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16367
16368         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16369         mono_debugger_create_notification_function() to use
16370         mono_global_codeman_reserve () instead of a dynamic code manager.
16371
16372 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16373
16374         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16375         ves_array_element_address() jit icall and use a generated
16376         managed method instead (which is about 4 times faster for a rank 3
16377         array access).
16378
16379 2006-11-29  Mark Mason  <mason@broadcom.com>
16380
16381         * basic-calls.cs: additional tests for passing
16382         structures as function arguments.
16383
16384 2006-11-29  Mark Mason  <mason@broadcom.com>
16385
16386         * mini-mips.h: disable custom exception handling
16387         * mini-mips.c: throw/rethrow should use jalr to call
16388         exception stubs.  Fixed bug with passing structures
16389         by value. More support for tracing floating point
16390         functions.
16391
16392 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * mini.c: fixed typo in the soft-float ldind.r4 handling
16395         (bug #80086).
16396
16397 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16398
16399         * mini.c, mini.h, driver.c: added --runtime command line
16400         option to select a different runtime than the autodetected one.
16401         * jit.h: added API for embedders to initialize with a specific
16402         runtime version.
16403
16404 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16405
16406         * mini.c: handle also boxing of r4 values (bug #80024).
16407
16408 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16409
16410         * mini-ppc.c: force indirect calls until we reserve
16411         enough address space for all the generated code.
16412
16413 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * exceptions-arm.c: workaround bugs in the libc definition
16416         of struct ucontext.
16417
16418 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16419
16420         * inssel.brg: fixes from me and Mark Mason.
16421
16422 2006-11-23  Dick Porter  <dick@ximian.com>
16423
16424         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16425         semaphore display now we've fixed the initial value
16426
16427 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16428
16429         * inssel.brg: partially revert the last change to fix the build.
16430
16431 2006-11-21  Mark Mason  <mason@broadcom.com>
16432
16433         * inssel.brg: Add and use compare-and-branch macros to support
16434         architectures that do not have condition code registers (ie. MIPS).
16435         * *-mips.{c,brg,md}: Fix copyright statements
16436
16437 2006-11-20  Mark Mason  <mason@broadcom.com>
16438
16439         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16440         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16441         * mini.h: Added declaration for mono_print_ins()
16442         * mini-codegen.c: added ins_spec initializer for MIPS
16443         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16444         vreg to be virtual and hreg to be non-virtual.
16445         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16446         is not yet working/implemented correctly.
16447         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16448         non-static, fixup calls to print_ins() from other parts in the file.
16449
16450 2006-11-20  Mark Mason  <mason@broadcom.com>
16451
16452         * basic-calls.cs: added tests for passing structures as arguments
16453         to calls.
16454
16455 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16456
16457         * inssel-long32.brg: optimize signed division by power of two.
16458
16459 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini-arm.c: added support for interworking with thumb code
16462         (mono must be still be built using the ARM instruction encoding).
16463
16464 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16465
16466         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16467         verifier has different rules for it.   Fixes a few verifier issues
16468         in the test suite.
16469
16470         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16471         at the end, so people know what happened.
16472
16473 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16474
16475         * brach-opts.c: in optimize_exception_target() make sure we
16476         are in a catch clause (fixes bug #79871).
16477
16478 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16479
16480         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16481         more soft-float support fixes.
16482
16483 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16484
16485         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16486         that are passed half on the stack and half in registers.
16487
16488 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16489
16490         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16491         more mips integration work from Mark E Mason 
16492         <mark.e.mason@broadcom.com>.
16493
16494 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16495
16496         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16497         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16498         tramp-mips.c: added sources for the mips port, not
16499         integrated in the build yet. Contributed by
16500         Mark E Mason <mark.e.mason@broadcom.com>.
16501
16502 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16503
16504         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16505
16506 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16507
16508         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16509         put the soft-float rules in its own file since it seems to
16510         break s390 compilation.
16511
16512 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16513
16514         * mini-arm.c: fixed wrnings.
16515
16516 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16517
16518         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16519         inssel-arm.brg: ARM support for soft-float.
16520
16521 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16524         loads and stores of 32 bit fp values.
16525
16526 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16527
16528         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16529
16530         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16531         works. Fixes #79852 and #79463.
16532
16533 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16534
16535         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16536         more soft-float support WIP and fixes.
16537
16538 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16539
16540         * mini-arm.c: some VFP updates.
16541
16542 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16543
16544         * mini-exceptions.c: 0 is a valid local var offset in some
16545         architectures, don't assert (bug #78508).
16546
16547 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16548
16549         * exceptions-arm.c: fixed off by one error in stack walk code.
16550
16551 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16552
16553         * mini.h, mini.c: more precise tracking of type load exceptions.
16554
16555 2006-11-03  Robert Jordan  <robertj@gmx.net>
16556
16557         * Makefile.am: [WIN32] Add monow.exe target.
16558         * driver.c: [WIN32] Don't detach the console when debugging.
16559         Fixes bug #79797.
16560         
16561 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16562
16563         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16564
16565 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16566
16567         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16568
16569         * driver.c (mini_regression): Fix --regression with AOT.
16570
16571         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16572
16573 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16574
16575         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16576
16577         * mini-sparc.h: Don't use sigaction on sparc/linux.
16578
16579         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16580
16581         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16582
16583         * mini-exceptions.c: Add proper include files for getpid ().
16584
16585 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16586
16587         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16588         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16589         method.
16590
16591         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16592         name cache to reduce its size.
16593
16594         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16595
16596 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16597
16598         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16599         the mono_lmf TLS variable.
16600
16601         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16602         trampoline lmf frames.  
16603
16604         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16605
16606 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16607
16608         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16609         the mono_lmf TLS variable.
16610
16611         * mini-exceptions.c: Access the LMF structure through accessors.
16612
16613         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16614         variable instead of in jit_tls->lmf.
16615
16616         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16617         
16618         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16619         trampoline lmf frames.
16620
16621         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16622
16623 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16624
16625        * mini.c trace.c mini-x86.c: Revert these too.
16626         
16627        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16628        signature change.
16629
16630 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16631
16632         * genmdesc.c: removed now dead code.
16633
16634 2006-10-09  Robert Jordan <robertj@gmx.net>
16635
16636         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16637
16638 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16639
16640         * mini.h: do not leave gaps in the opcode values.
16641
16642 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16643
16644         * jit-icalls.h: flag functions as internal here, too.
16645
16646 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16647
16648         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16649         functions with the internal attribute.
16650
16651 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16652
16653         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16654
16655 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16656
16657         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16658         for soft-float.
16659
16660 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16661
16662         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16663         tail calls as on other platforms.
16664
16665         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16666
16667         * iltests.il: Add a few tailcall tests.
16668
16669 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16670
16671         * driver.c: fix loop for old compilers (bug #79521).
16672
16673 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16676
16677         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16678
16679         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16680         metadata without any code.
16681
16682         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16683         more precise debugging information using gdb.
16684
16685 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16686
16687         * inssel-ia64.brg: Make the helper methods static.
16688
16689 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16690
16691         * inssel-x86.brg: make the helper methods static.
16692
16693 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16694
16695         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16696
16697 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16698
16699         * mini.c: updates for monoburg changes.
16700         * inssel.brg: make a few helper functions static as they should.
16701
16702 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16703
16704         * Makefile.am: Move mini-codegen.c to common_sources.
16705
16706 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16707
16708         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16709         instructions.
16710         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16711         mini-ppc.h: port to use the common local register allocator.
16712
16713 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16714
16715         * mini.h: Remove the comment too then.
16716
16717 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16718
16719         * mini.h: put back backend.data which is to be used shortly and
16720         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16721         pointers on 4 byte boundaries it'd have much bigger issues running
16722         and you can ifdef it out anyway.
16723
16724 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16727         MonoInst size by 4 bytes on 64 bit machines.
16728
16729 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16730
16731         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16732         replacement with more meaningful field names. Arch maintainers, please
16733         check the assigned names are good enough for your arch.
16734
16735 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16736
16737         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16738         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16739
16740 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16741
16742         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16743         relocations and memory requirements, put the optimization flags
16744         definitions in their own file.
16745
16746 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16747
16748         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16749
16750         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16751
16752 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16753
16754         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16755
16756 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16757
16758         * inssel.brg: use the correct function to get the size of an item
16759         in an array, given an element class.
16760         * aot-compiler.c: do not access class->class_size directly.
16761
16762 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16763
16764         * mini.h, debug-mini.c: added a debugging function to print
16765         info about local variables and arguments in a jitted method.
16766
16767 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16768
16769         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16770
16771         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16772
16773 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16774
16775         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16776         inner and outer loops when passing vtypes.
16777
16778 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16779
16780         * mini-ppc.c: take into account the cpu errata for cache flushing
16781         which caused some random errors (bug #79381).
16782
16783 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16784
16785         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16786         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16787
16788 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16789
16790         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16791         loaded.
16792
16793         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16794         freebsd ports tree.
16795
16796         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16797         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16798
16799         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16800         displacement.
16801
16802 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16803
16804         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16805
16806 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16807
16808         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16809         macro does not have to be changed during debugging.
16810
16811         * 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>.
16812
16813         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16814
16815         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16816         
16817         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16818         MONO_ARCH_NO_EMULATE_MUL is defined.
16819
16820         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16821
16822         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16823
16824         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16825
16826         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16827         
16828 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16829
16830         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16831         stuff to mini-exceptions.c where it is used.
16832
16833         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16834         setup code, the real one is in mini-exceptions.c.
16835
16836         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16837         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16838         some changes from the freebsd ports tree.
16839
16840         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16841         constants.
16842         
16843         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16844
16845 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16846
16847         * mini.c: on Linux, check for /proc to be mounted
16848         (bug# 79351, novell bug#201204).
16849
16850 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16851
16852         * mini.c: handle cases where pthread_attr_getstack() behaves
16853         incorrectly (bug #78096).
16854
16855 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16856
16857         * mini-arm.c: support larger stack frames (bug #79272).
16858
16859 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16860
16861         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16862
16863         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16864         tokens.
16865
16866         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16867         mono_class_from_name () to find a class from its name.
16868
16869         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16870
16871 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16874
16875 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16876
16877         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16878
16879 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16880
16881         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16882         callinfo->trampoline.
16883
16884         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16885         fixes #79271.
16886         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16887         future.
16888
16889 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16892
16893 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16894
16895         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16896         stats.method_trampolines, it is already done by the generic trampoline code.
16897
16898         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16899         
16900 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16901
16902         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16903
16904         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16905
16906         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16907
16908         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16909         
16910         * mini.c (print_jit_stats): Print new stats.
16911
16912         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16913
16914 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16915
16916         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16917         Address on two dimensional arrays. Fixes #78729.
16918
16919         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16920
16921         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16922         a method.
16923
16924         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16925
16926         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16927         #79130.
16928         
16929         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16930         a race condition.
16931         (mini_get_ldelema_ins): Ditto.
16932
16933 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16934
16935         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16936         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16937         Fixes #79213.
16938
16939 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16940
16941         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16942         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16943
16944         * exceptions-s390x.c: Cosmetic change.
16945
16946         * tramp-s390.c: Fix warning.
16947
16948         * cpu-s390.md: Correct length of mul_imm.
16949
16950 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16951
16952         * aot-compiler.c: added binary writer with ELF backend
16953         implementation (only on Linux/x86 for now).
16954
16955 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * Makefile.am: Don't run net 2.0 AOT tests.
16958
16959         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16960         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16961
16962         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16963
16964 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16965
16966         * aot-compiler.c: simplified and refactored the asm-writing code
16967         to allow different backends.
16968
16969 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16970
16971         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16972
16973         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16974         little. Share patches of type TYPE_FROM_HANDLE as well.
16975
16976         * mini.c (mono_patch_info_equal): New helper function.
16977         (mono_patch_info_hash): Ditto.
16978
16979         * aot-compiler.c (emit_method_code): Fix s390 build.
16980
16981         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16982         is not handled because it is stored as a flag and not as a type ctor. Fixes
16983         #79016.
16984
16985 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16986
16987         * aot-compiler.c: Fix computation of GOT slot statistics.
16988         
16989         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16990         Also remove support for not PIC AOT.
16991
16992         * mini.h: Bump AOT file format version.
16993
16994         * objects.cs: Add a test for #78990.
16995
16996         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16997         (peter.dettman@iinet.net.au). Fixes #79087.
16998
16999         * basic-long.cs: Add a test for the above.
17000
17001 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
17002
17003         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
17004         
17005         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
17006         code somewhat.
17007
17008 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
17009
17010         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
17011         exceptions.
17012
17013 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
17014
17015         * mini.c: Don't verify COM proxy invoke calls
17016         
17017
17018 2006-08-10  Dick Porter  <dick@ximian.com>
17019
17020         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
17021         which process is holding semaphores locked.
17022
17023 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
17024
17025         * mini-ia64.c mini-amd64.c: Fix #79027.
17026
17027         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17028
17029         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17030
17031         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17032         implicit arguments in a vararg call. Fixes #79027.
17033
17034 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17035
17036         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17037         (mono_get_array_new_va_signature): Ditto.
17038
17039 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17040
17041         * aot-runtime.c: Call init_plt lazily.
17042
17043         * inssel-long.brg: Fix unsigned long->int conversion.
17044
17045         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17046
17047         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17048         that most data is now in the .rss/.data section.
17049
17050 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17053
17054         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17055
17056         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17057
17058         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17059
17060         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17061         virtual call. Fixes #79010.
17062
17063         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17064         and use the result as the this argument in the real call.
17065
17066         * generics.2.cs: Add a new test for #79010.
17067         
17068 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17069
17070         * mini-x86.c: Fix a warning.
17071
17072         * aot-compiler.c: Add a bunch of statistics.
17073
17074         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17075
17076 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17077
17078         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17079
17080 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17081
17082         * 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>.
17083
17084 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17085
17086         * mini.c (mono_method_to_ir): Obtain the original method in the
17087         CIL stream and use this to perform validation.
17088
17089         Fixed: #78816
17090
17091 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17092
17093         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17094         (mono_arch_call_opcode): Ditto.
17095
17096         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17097         #78826.
17098
17099         * mini.c (mono_patch_info_dup_mp): New helper function.
17100         
17101         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17102         compilation. Fixes #78827.
17103
17104 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17105
17106         * declsec.c: Use original security informations for
17107           MONO_WRAPPER_MANAGED_TO_MANAGED.
17108
17109 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17110
17111         * mini.c: Allow Com Interop methods/classes and
17112         don't verify COM wrapper calls
17113         
17114
17115 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17116
17117         * inssel-long32.brg: Fix long->i4 checked conversion.
17118
17119         * exceptions.cs: Add a test for the above.
17120
17121 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17122
17123         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17124
17125         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17126         leaks.
17127
17128         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17129         #78775.
17130
17131 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17132
17133         * mini.c: Fix solaris/x86 exception handling.
17134
17135         * Makefile.am: Get rid of $(ICU_LIBS).
17136
17137 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17138
17139         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17140         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17141         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17142
17143         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17144
17145         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17146         this function causes a SIGSEGV.
17147
17148 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17149
17150         * mini.c: Remove unused solaris/x86 includes.
17151
17152 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17153
17154         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17155
17156 2006-06-20  Jb Evain  <jbevain@gmail.com>
17157
17158         * cpu-g4.md: fix max length of start_handler instruction.
17159
17160 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17161         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17162
17163 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17164         * ssa.c: Fixed bug 78653 for SSA based deadce.
17165         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17166         MonoInst.flags, used in SSA based deadce.
17167         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17168         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17169
17170 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17171
17172         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17173         it can end up using non executable memory on ppc64 systems
17174         running ppc32 userspace (fix from Johannes Berg).
17175
17176 2006-06-14  Dick Porter  <dick@ximian.com>
17177
17178         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17179         4.1.1
17180
17181 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17182         * mini.c: Made so that inline is locally disabled if it would
17183         trigger a .cctor, because too many apps depend on this behavior
17184         (which seems to be also the one of the MS CLR).
17185
17186 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17187
17188         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17189         No idea why this worked before.
17190
17191         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17192         which branch to outer exception clauses since they could skip the
17193         inner finally clauses. Fixes #78633.
17194
17195         * exceptions.cs: Add a test for the above.
17196
17197         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17198         Fixes #78629.
17199
17200         * iltests.il: Add a test for the above.
17201
17202 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17203
17204         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17205         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17206
17207         * iltests.il: Add a test for the above.
17208
17209 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17212         
17213         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17214         methods as instrinsics.
17215
17216 2006-06-09  Wade Berrier <wberrier@novell.com>
17217
17218         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17219         (simple-cee-ops.h ssapre-mini-ops.h)
17220
17221 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17222
17223         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17224         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17225         instruction).
17226         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17227         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17228
17229 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17230
17231         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17232
17233 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17234
17235         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17236         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17237         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17238         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17239         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17240         of opcodes, so that bug 78549 should not happen again.
17241         * ssapre.c: Updated to use the renamed files.
17242
17243 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17246         in OP_ATOMIC_EXCHANGE_I4.
17247
17248 2006-06-07  Wade Berrier <wberrier@novell.com>
17249
17250         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17251         in mono_debugger_create_notification_function)
17252
17253 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17254
17255         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17256         
17257         * mini.c (type_from_stack_type): Disable some changes which do not
17258         seem to work.
17259
17260         * driver.c: Reenable opts.
17261
17262         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17263         of the evaluation stack.
17264         
17265         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17266         evaluation stack trace at entry to the bblock.
17267
17268         * mini.c (merge_stacks): New function to perform verification of stack merges.
17269         Turned off by default.
17270
17271         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17272         STACK_MP.
17273         
17274 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17275
17276         * local-propagation.c: Fixed bug 78549.
17277
17278 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17279
17280         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17281
17282 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17283
17284         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17285         tramp-arm.c, tramp-ia64.c
17286         (mono_debugger_create_notification_function): Update signature to
17287         new signature and use new protocol for creating the notification
17288         function.  
17289
17290         Should fix the build.
17291
17292 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17293
17294         * exceptions-ppc.c (mono_jit_walk_stack)
17295         (ves_icall_get_frame_info): Fix the build
17296
17297 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17298
17299         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17300
17301 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17302
17303         * il2tests.2.il: New file for generics CIL tests.  Add test for
17304         #78019.
17305         * Makefile.am: Update.
17306
17307         Fix #78019
17308         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17309         to nullable types.
17310
17311 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17312
17313         * aliasing.c: Fixed bug 78311.
17314
17315 2006-05-29  Martin Baulig  <martin@ximian.com>
17316
17317         * mini-exceptions.c (mono_find_jit_info): When computing the
17318         native offset, check whether we're actually inside the method's
17319         code; call mono_debug_print_stack_frame() to format the frame.
17320         (ves_icall_System_Exception_get_trace): Call
17321         mono_debug_print_stack_frame() to format the stack frame.
17322         (ves_icall_get_trace): Update to the new debugging API.
17323         (mono_jit_walk_stack_from_ctx): Likewise.
17324         (ves_icall_get_frame_info): Likewise.
17325
17326         * mini.c (get_method_from_ip): Use the new debugging API.
17327         (mono_print_method_from_ip): Likewise.
17328
17329         * exceptions-ppc.c
17330         (mono_jit_walk_stack): Use the new debugging API.
17331         (ves_icall_get_frame_info): Likewise.   
17332
17333 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17334
17335         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17336
17337 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17338
17339         * mini.c: Added "limitator" to inline for debugging.
17340
17341 2006-05-24  Martin Baulig  <martin@ximian.com>
17342
17343         * debug-debugger.c (mono_debugger_init): Create a private,
17344         malloc()-based code manager for the notification function and
17345         intentionally leak it on exit.  This fixes the crash-on-exit race
17346         condition.
17347
17348         * tramp-amd64.c
17349         (mono_debugger_create_notification_function): Added
17350         `MonoCodeManager *' argument.
17351
17352         * tramp-x86.c
17353         (mono_debugger_create_notification_function): Added
17354         `MonoCodeManager *' argument.
17355
17356 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17357
17358         * aliasing.c: Fixed 64 bit issue.
17359         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17360         default since all known bugs are fixed (one more time!).
17361
17362 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17363
17364         * mini.c: write barrier support.
17365
17366 2006-05-23  Martin Baulig  <martin@ximian.com>
17367
17368         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17369         check at the top of the file.
17370
17371 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17372
17373         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17374         reverting changes without reason and without changelog entries.
17375
17376 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17377
17378         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17379         to a few opcodes. Fixes #78439.
17380
17381         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17382         consistency with other archs.
17383
17384         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17385
17386 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17387
17388         * debug-debugger.c: fix the build.
17389
17390 2006-05-17  Martin Baulig  <martin@ximian.com>
17391
17392         * debug-debugger.c
17393         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17394         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17395         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17396         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17397
17398 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17399
17400         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17401
17402 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17403
17404         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17405         MONO_TYPE_GENERICINST.
17406         
17407         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17408         MONO_TYPE_GENERICINST.
17409
17410 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17411
17412         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17413         #78325.
17414
17415 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17416
17417         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17418         mempool.
17419         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17420
17421 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17422
17423         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17424         mono_trace_cleanup ().
17425
17426         * iltests.il: Fix problem with the newly added test.
17427
17428         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17429         due to register constraints, free up the previous hreg. Fixes #78314.
17430
17431         * iltests.il: Add new test for #78314.  
17432
17433         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17434         Interlocked.Add. Fixes #78312.
17435
17436         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17437         
17438 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17439
17440         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17441
17442 2006-05-05  Martin Baulig  <martin@ximian.com>
17443
17444         * debug-mini.c (mono_debug_open_block): New method.
17445
17446         * mini-amd64.c
17447         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17448         the beginning of each basic block.
17449
17450         * mini-x86.c
17451         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17452         the beginning of each basic block.
17453
17454 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17455
17456         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17457         default until I understand why they break the build on amd64.
17458
17459 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17460
17461         * mini.c (mini_cleanup): Call mono_cleanup ().
17462
17463         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17464         errors.
17465
17466 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17467
17468         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17469         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17470         default since all known bugs are fixed, and I cannot reproduce bug
17471         77944... I'm asking Matt Hargett to test again after this commit.
17472
17473 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17474
17475         * mini-codegen.c: Fixed typo that thrashed inline.
17476
17477 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17478
17479         * dominators.c (compute_dominators): Avoid using a worklist since
17480         it is not correct in some cases. Instead, iterate over all bblocks as
17481         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17482
17483 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17484
17485         * mini.c (mono_jit_compile_method_inner): Use
17486         mono_prepare_exception_from_error that resets the value
17487         internally.
17488
17489 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17490
17491         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17492         
17493 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17494
17495         * aliasing.c: Fixed bug 78210.
17496
17497 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17498
17499         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17500         default until all their problems (or the ones they trigger) are fixed.
17501
17502 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17503
17504         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17505         
17506         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17507         as loaded only after resolving patches since that could invoke the same method.
17508
17509         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17510
17511         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17512         functions.
17513
17514         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17515         AOT loader.
17516
17517         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17518         stack.
17519
17520         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17521         made from AOT code through the PLT table.
17522
17523         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17524         holding the plt offset when a call is made to the aot plt trampoline.
17525         
17526 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17529         amd64 AOT support.
17530
17531         * Makefile.am (common_sources): Fix build breakage.
17532
17533         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17534         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17535         intra-assembly calls if possible.
17536         
17537         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17538
17539         * mini-trampolines.c: Handle PLT entries.
17540
17541         * mini.c: Avoid creating a GOT var for calls.
17542
17543         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17544         from mscorlib code.
17545
17546         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17547         from mscorlib code.
17548
17549         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17550         AOT code.       
17551
17552         * mini.h: Bump AOT file format version.
17553         
17554         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17555         covers more cases.
17556
17557 2006-04-25  Martin Baulig  <martin@ximian.com>
17558
17559         * driver.c: Disable copyprop, consprop and inline when running
17560         inside the debugger.
17561
17562 2006-04-25  Martin Baulig  <martin@ximian.com>
17563
17564         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17565         with `get_current_thread' and added `detach'.
17566         (MonoDebuggerMetadataInfo): Added `thread_size',
17567         `thread_tid_offset', `thread_stack_ptr_offset' and
17568         `thread_end_stack_offset'.
17569
17570 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17571
17572         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17573         aot-runtime.c.
17574
17575         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17576         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17577
17578         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17579
17580         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17581
17582         * aot.c: Add support for ADJUSTED_IID.  
17583
17584 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17585
17586         * aot.c (emit_method_order): Don't align method_order_end.
17587
17588         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17589         the interface ID changes.
17590
17591 2006-04-21  Dick Porter  <dick@ximian.com>
17592
17593         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17594         cleaning up a thread.  Fixes the new part of bug 77470.
17595
17596 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17597
17598         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17599         to managed wrapper.
17600                      
17601 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17602
17603         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17604         
17605         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17606         SIGSEGV. Fixes #78072.
17607
17608         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17609         unregister our SIGABRT handler.
17610
17611 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17612
17613         * mini.c: Disabled inline where it can alter the call stack in a
17614         way visible from managed code.
17615         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17616         default.
17617
17618 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17619
17620         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17621         on other platforms. Fixes #78089.
17622
17623 2006-04-13  Martin Baulig  <martin@ximian.com>
17624
17625         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17626         determine whether we're inside the debugger.
17627
17628         * debug-debugger.h
17629         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17630
17631 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17632
17633         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17634         handler clauses. Fixes #78024.
17635
17636         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17637         in the CALL_MEMBASE opcodes. Fixes #78088.
17638         (mono_arch_get_vcall_slot_addr): Ditto.
17639
17640 2006-04-10  Martin Baulig  <martin@ximian.com>
17641
17642         * debug-debugger.c: The thread handling code has now been moved
17643         into ../metadata/threads.c.
17644
17645 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17646
17647         * driver.c (mono_main): Fix --with-gc=none build.
17648
17649         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17650         (mono_spillvar_offset_float): Ditto.
17651         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17652         hreg, not when its !global, since on ia64, there is a third category: stacked
17653         registers.      
17654
17655 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17656
17657         * mini.c: set MonoInst->klass for load field address and a few other
17658         places.
17659
17660 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17661
17662         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17663
17664 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17667         the branch opt changes.
17668
17669 2006-04-06  Dick Porter  <dick@ximian.com>
17670
17671         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17672         
17673         * wapihandles.c (mini_wapi_seminfo): 
17674         * driver.c (mono_main): Add semaphore info option
17675
17676 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17677
17678         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17679         branch optimization changes. Fixes #78009.
17680
17681 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17682
17683         * mini.c: ignore accessibility of methods in managed->native wrappers.
17684
17685 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17686
17687         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17688         
17689         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17690
17691 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17692
17693         * mini.c: Modify the branch optimizations to preserve the invariant that
17694         the entries inside the in_bb and out_bb arrays are unique.
17695         (mono_unlink_bblock): Avoid creation of new arrays.
17696
17697 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17698
17699         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17700         change (#77992).
17701
17702 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * mini.c (optimize_branches): Remove the "optimizations" in
17705         the cbranch1/cbranch2 -> branch cases which were causing several
17706         problems in the past. Fixes #77986.
17707
17708 2006-03-31  Chris Toshok  <toshok@ximian.com>
17709
17710         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17711         default optimizations :(
17712
17713 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17714
17715         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17716         branch.
17717
17718 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17719
17720         * local-propagation.c: Added comments to structs and removed
17721         "Mono" prefixes from local tree mover types.
17722
17723 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17724
17725         * Makefile.am (arch_sources): Define this for each architecture so 
17726         libmono_la_SOURCES is defined in one place.
17727
17728 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17729
17730         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17731         from handles/.
17732
17733 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17734
17735         * driver.c: print the GC name supplied by configure.
17736
17737 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17738
17739         * local-propagation.c: Added tree mover, and moved here all the
17740         local propagation code from mini.c
17741         * mini.c: Added support for treeprop, and moved all the local
17742         propagation code to local-propagation.c
17743         * mini.h: Added support for treeprop
17744         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17745         treeprop, inline and deadce by default
17746         * Makefile.am: Added local-propagation.c
17747
17748 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17749
17750         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17751
17752 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17753
17754         * debug-debugger.c: make it compile without the Boehm GC.
17755
17756 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17757
17758         * mini.c: fixed issue with mismatch when an icall is registered
17759         with multiple names but same address.
17760
17761 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17762
17763         * declsec.c, mini-exceptions.c: use write barrier to set reference
17764         fields of managed objects.
17765
17766 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17767
17768         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17769         (can_access_internals): Fix a warning.
17770
17771         * mini.c (print_method_from_ip): Rename this to 
17772         mono_print_method_from_ip so it gets exported.
17773
17774         * trace.c: Deal with strings inside StringBuilder's containing garbage
17775         and fix memory leaks. Fixes #77848.
17776
17777 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17778
17779         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17780         fixes #77787.
17781
17782 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17783         
17784         * mini-s390.c: Remove OP_X86_TEST_NULL.
17785
17786 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17787
17788         * mini.c: use the correct GetHashCode() for the moving collector.
17789
17790 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17791
17792         * liveness.c: Regalloc spill cost tuning.
17793
17794 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17795         
17796         * mini-s390x.h: Correct S390_LONG macro.
17797
17798         * mini-s390x.c: Cleanup unused code.
17799
17800 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17801
17802         * jit-icalls.h: New file.
17803
17804         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17805         icalls and include that instead of including jit-icalls.c.
17806
17807         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17808         OP_X86 opcodes.
17809
17810 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17811
17812         * mini.c: when checking for member accessibility, also check for
17813         friend assemblies and for explicit interface implementations.
17814
17815 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17816
17817         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17818
17819         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17820
17821         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17822         common cases are done first.    
17823
17824         * mini-ops.h: Only define platform specific opcodes on the given platform.
17825
17826         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17827         branch.
17828         
17829 2006-03-14  Martin Baulig  <martin@ximian.com>
17830
17831         Revert Paolo's change from r57348:
17832
17833         * mini.h: don't use gboolean for bitfields.
17834         * mini.c: verifier changes for fields and methods accessibility.
17835
17836 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17837
17838         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17839
17840         * mini-s390x.c: Fix conv_r_un.
17841
17842         * cpu-s390, cpu-s390x.md: Fix lengths.
17843
17844 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17845
17846         * mini.c: nested types have access to all the nesting
17847         levels, not just the enclosing types.
17848
17849 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17850
17851         * mini.c: added a few more verification checks.
17852
17853 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17854
17855         * liveness.c: Merge optimizations from the linear-il branch.
17856
17857 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17858
17859         * mini-ia64.c (emit_call): Add a comment.
17860
17861         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17862
17863         * tramp-ia64.c: Fix some warnings.
17864
17865 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17866
17867         * mini.h: don't use gboolean for bitfields.
17868         * mini.c: verifier changes for fields and methods accessibility.
17869
17870 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17871
17872         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17873         lazy icall wrapper changes.
17874
17875         * dominators.c: Replace all the dominator algorithms with faster
17876         ones from the linear-il branch.
17877
17878         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17879         the mempool.
17880
17881         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17882         common cases are done first.
17883
17884         * mini-amd64.c: Fix some warnings.
17885
17886         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17887         from the mempool.
17888
17889         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17890         added code.
17891
17892         * mini.h: Add a missing prototype.
17893
17894 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17895
17896         * mini.c: Compile icall wrappers lazily.
17897
17898         * mini-codegen.c: Use printf instead of g_print since its much faster.
17899
17900         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17901         function.
17902
17903         * mini.c (optimize_branches): Cache the negative result from 
17904         remove_block_if_useless ().
17905
17906         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17907         Also fix some bblock linking issues.
17908
17909         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17910         assembly files.
17911
17912         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17913
17914         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17915         accessed fields first, for better cache behavior.
17916         
17917 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17918
17919         * mini.c: speedup IList<T> array accesses.
17920
17921 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17922
17923         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17924         inline_costs counter. Fixes #77190.
17925
17926 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17927
17928         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17929         trace messages. Fixes #77706.
17930
17931 2006-03-04  Martin Baulig  <martin@ximian.com>
17932
17933         * tramp-amd64.c, tramp-x86.c
17934         (mono_debugger_create_notification_function): Use
17935         mono_global_codeman_reserve() to allocate a buffer at runtime and
17936         return it.
17937
17938         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17939
17940         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17941         notification function at runtime and then call `initialize' in the
17942         `MONO_DEBUGGER__debugger_info' vtable.
17943
17944 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17945
17946         * iltests.il: Fix a visibility problem.
17947
17948 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17949
17950         * driver.c, mini.c: add hooks for the counters API.
17951
17952 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17953
17954         * driver.c: show disabled options.
17955
17956 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17957
17958         * linear-scan.c: always use cost-driven selection.
17959
17960 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17961
17962         * jit-icalls.c (helper_compile_generic_method): Revert change from
17963         2006-02-24.
17964
17965 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17966
17967         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17968
17969 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17970
17971         * inssel.brg: style fixes, mostly to force the updated monoburg
17972         to run for people using svn.
17973
17974 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17975
17976         * mini.c: match monoburg changes.
17977
17978 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17979
17980         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17981         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17982         declaration in the header file.
17983
17984 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17985
17986         * helpers.c: reduce relocations and mem usage.
17987
17988 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17989
17990         * mini.h, mini-codegen.c: disable logging features if
17991         requested by configure.
17992
17993 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17994
17995         * mini.c: tiny verifier changes.
17996
17997 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17998
17999         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
18000         cpu-pentium.md: stack alignment changes for osx/x86,
18001         partially from Geoff Norton <gnorton@customerdna.com>.
18002
18003 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18004
18005         * jit-icalls.c (helper_compile_generic_method): Update to changes
18006         in metadata/class.c.
18007
18008 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18009         
18010         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
18011         
18012         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
18013         interface calls with large offsets.
18014
18015 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18016
18017         * jit-icalls.c (helper_compile_generic_method): Document the
18018         special-case we depend on so that we can inflate the method twice
18019         with the same context with no bad side-effects.
18020
18021 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini-x86.c, mini-amd64.c: fix for case when xen support
18024         is disabled.
18025
18026 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18027
18028         * mini-x86.c, mini-amd64.c: generate code to access tls items
18029         in a faster way for Xen systems.
18030
18031 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18032
18033         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18034         updates and compilation fixes for the OSX/x86 port, mostly from
18035         Geoff Norton <gnorton@customerdna.com>.
18036
18037 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * inssel.brg: faster interface call implementation
18040         to sync with the interface_offsets MonoVTable changes.
18041
18042 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18043
18044         * mini.c: more verification checks.
18045
18046 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18047
18048         * mini.c: added a few more verification checks.
18049
18050 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18051
18052         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18053         facility on the processor and use it if available.
18054
18055 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18056
18057         * driver.c, aot.c, mini.c: throw exception if the IL code is
18058         invalid or unverifiable.
18059
18060 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18061
18062         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18063         m.StructField.
18064
18065 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18066
18067         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18068
18069 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18070
18071         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18072         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18073         handling of instantiated generic valuetypes.
18074
18075 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18076
18077         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18078         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18079         instead.
18080
18081         * generics.2.cs: Revert the nullable reftypes tests.
18082
18083 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18086         using __builtin_frame_address (1) as it doesn't work in the presence
18087         of optimizations. Hopefully fixes #77273.
18088
18089         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18090         -> generics.cs change as it doesn't work with some automake versions.
18091
18092 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18093
18094         * mini.c: handle systems that sue a different way to
18095         retrieve the stack address of the current thread.
18096
18097 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18098
18099         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18100         it specially in the makefile.
18101
18102         * generics.2.cs: Add tests for nullable reference types.
18103
18104 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18105
18106         * mini.c: always handle the case when mono_jit_init()
18107         is called in a thread different from the main thread,
18108         confusing libgc (bug #77309).
18109
18110 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18111
18112         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18113
18114 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18115
18116         * mini.c: change optimize_branches () to use a single loop
18117         and introduce a new optimization to simplify some range checks.
18118
18119 2006-02-03  Martin Baulig  <martin@ximian.com>
18120
18121         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18122         and merged with debugger_thread_manager_add_thread().
18123         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18124         inform the debugger about the main thread.
18125
18126 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18127
18128         * basic.cs: Add test for div.un/rem.un constant folding.
18129
18130 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18131
18132         * cpu-s390x.md: correct int_xor_imm length
18133
18134 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18135
18136         * generics.2.cs: New test for #77442.
18137
18138         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18139         #77442.
18140
18141 2006-02-02  Martin Baulig  <martin@ximian.com>
18142
18143         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18144         <mono/metadata/mono-debug-debugger.h>   
18145
18146         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18147
18148 2006-02-02  Martin Baulig  <martin@ximian.com>
18149
18150         * debug-debugger.h: New header file for debug-debugger.c.
18151
18152         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18153         function is a separate thread anymore; add support for attaching.
18154
18155 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18156
18157         * tramp-x86.c: Fix a warning.
18158
18159 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18160
18161         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18162         on very large methods.
18163
18164         * aot.c (load_patch_info): Fix a warning.
18165
18166 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18167
18168         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18169         mini-ops.h: alu membase optimizations.
18170
18171 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18172
18173         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18174         to speedup StringBuilder.
18175
18176 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18177
18178         * dominators.c (mono_compute_natural_loops): Fix detection of
18179         loop body start blocks.
18180
18181         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18182
18183 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18184
18185         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18186         #75145.
18187
18188 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18189
18190         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18191
18192 2006-01-25  Martin Baulig  <martin@ximian.com>
18193
18194         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18195         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18196         started to cleanup this file a little bit.
18197
18198 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18199
18200         * mini.c: optimize a codepath frequently happening in generics code.
18201
18202 2006-01-23  Martin Baulig  <martin@ximian.com>
18203
18204         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18205
18206         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18207         functions directly.
18208
18209         * driver.c: debug-debugger.c is only available if
18210         `MONO_DEBUGGER_SUPPORTED' is defined.   
18211
18212 2006-01-23  Martin Baulig  <martin@ximian.com>
18213
18214         * debug-debugger.c: Only enable this on platforms where the Mono
18215         Debugger is working (x86 and x86_64).
18216
18217 2006-01-21  Martin Baulig  <martin@ximian.com>
18218
18219         The Mono Debugger is now using the normal `mono' instead of the
18220         `mono-debugger-mini-wrapper' when executing managed code.
18221
18222         * debug-debugger.c: New file; previously known as
18223         debugger/wrapper/wrapper.c.
18224
18225         * debug-mini.c (mono_init_debugger): Removed.
18226
18227         * driver.c (mono_main): Added new `--inside-mdb' command line
18228         argument which is used when running inside the debugger.
18229
18230 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18231
18232         * liveness.c (mono_analyze_liveness): Remove some unused data
18233         structures.
18234
18235 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18236
18237         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18238
18239 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18240
18241         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18242         depends on implementation details of monobitset.
18243
18244         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18245         Fixes #77271.
18246
18247 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18248
18249         * liveness.c: Update after monobitset changes.
18250
18251 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18252
18253         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18254
18255 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18256
18257         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18258
18259         * mini-s390x.c: Remove warning messages.
18260
18261 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18262
18263         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18264
18265 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18266
18267         * generics.2.cs: Add ldelem/stelem_any test.
18268
18269 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18270
18271         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18272
18273 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18274
18275         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18276         
18277 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18278
18279         * generics.2.cs: Reenable vtype tests.
18280
18281         * inssel-x86.brg: Remove an icorrect valuetype rule.
18282
18283 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18284
18285         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18286         initial support for OP_ABS.
18287
18288 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18289
18290         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18291
18292 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18293
18294         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18295         conversion and implement LADD/LSUB.
18296
18297         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18298         architectures.
18299
18300 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18301
18302         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18303
18304         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18305         architectures.
18306
18307 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18308
18309         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18310         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18311         (stack walk problem).
18312
18313 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * aot.c (mono_aot_load_method): Fix a warning.
18316
18317 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18318
18319         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18320
18321 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18322
18323         * iltests.il: Add test for #77148.
18324
18325         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18326         #77148.
18327
18328 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18329
18330         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18331
18332 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18333
18334         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18335         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18336
18337         * basic-long.cs: Add lconv-to-r4/r8 tests.
18338
18339 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18340
18341         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18342
18343         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18344         here as on other archs.
18345
18346 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18347
18348         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18349
18350 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18351
18352         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18353         
18354         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18355
18356         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18357         instrument_prolog; Add memory_barrier instruction.
18358
18359 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18360
18361         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18362
18363 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18364
18365         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18366
18367         * aliasing.c inssel.brg: Fix warnings.
18368
18369         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18370         could skip initialization of some parts of memory.
18371
18372         * mini.c mini-ia64.c: Fix warnings.
18373
18374         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18375
18376 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18377
18378         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18379         a crash seen on sparc.
18380
18381         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18382         
18383         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18384
18385 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18386
18387         * mini-ops.h: Add s390_backchain instruction
18388
18389         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18390
18391         * cpu-s390.md: Add s390_backchain instruction
18392
18393         * mini-s390.c: Significant ABI changes
18394
18395         * mini-s390.h: Cater for zero length structures
18396
18397 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18398
18399         * mini-s390.c: ABI fixes
18400
18401         * inssel-s390.brg: Remove debug statements
18402
18403         * cpu-s390.md: Fix length of ATOMIC_xx operations
18404
18405 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18406
18407         * basic-float.cs: Add float<->long conversion tests.
18408
18409 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18410
18411         * mini-s390.c: Fix LOCALLOC processing.
18412
18413         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18414
18415 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18416
18417         * iltests.il: Add tests for some opcodes not covered by the other
18418         tests.
18419
18420 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18421
18422         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18423         register loading for Tail processing; Correct trace output.
18424
18425         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18426
18427         * cpu-s390.md: Correct size of jmp instruction. 
18428
18429 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18430
18431         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18432
18433 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18434
18435         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18436           Bring s390 up to current level.
18437
18438 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18439
18440         * generics.2.cs: Disable the newly added tests as they do not work yet.
18441         
18442         * generics.2.cs: Add valuetype tests.
18443
18444 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18445
18446         * basic-long.cs: Add i4->u8 test.
18447
18448         * objects.cs: Add tests for JIT intrinsic.
18449
18450         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18451         optimizations lost by a mistake.
18452
18453 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18454
18455         * basic-long.cs: Remove a test moved to objects.cs.
18456
18457         * arrays.cs: Add more array tests.
18458
18459 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18460
18461         * arrays.cs: Add new tests for multi-dimensional arrays.
18462
18463 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18464
18465         * Makefile.am (test_sources2): Add generics.2.cs.
18466         (EXTRA_DIST): Add test_sources2.
18467
18468 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18469
18470         Support for boxing and unboxing nullable types as well as the
18471         isinst operation on nullables, per the CLI ammendment.
18472
18473         * inssel.brg (CEE_ISINST): Special case for nullable
18474
18475         * mini.c (handle_unbox_nullable): new method
18476         (handle_box): Special case for nullable types
18477         (mono_method_to_ir): Call handle_unbox_nullable in correct
18478         places.
18479
18480         * generics.2.cs: New test suite
18481
18482         * Makefile.am: Support for regression tests with generics.
18483
18484 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18485
18486         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18487         allocated to registers. Fixes #76800.
18488
18489 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18490
18491         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18492
18493 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18494
18495         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18496         of platforms.
18497
18498 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18499
18500         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18501         objects.cs.
18502
18503         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18504         
18505         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18506 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18507
18508         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18509         single precision before storing to a single precision location.
18510
18511 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18512
18513         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18514
18515 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18516
18517         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18518         correct files.
18519
18520         * basic.cs: Remove test_0_byte_compares test which was moved to
18521         objects.cs a long time ago.
18522
18523 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18524
18525         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18526
18527 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18528
18529         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18530         handlers are called.
18531
18532         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18533         throwing code.
18534
18535          * mini-ia64.c: Add support for the throw->branch exception 
18536         optimization.   
18537
18538         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18539
18540 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18541
18542         * mini.c: Enabled "fastpath" deadce :-)
18543         
18544 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18545
18546         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18547         alias analysis pass to support it.
18548         * mini.h: Likewise.
18549         * ssa.c: Likewise.
18550         * liveness.c: Likewise (liveness computation can use aliasing
18551         information to be more accurate).
18552         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18553         moreover made so that "--compile-all" uses the given optimization
18554         flags and not the default ones.
18555         * aliasing.c: Alias analysis (new file).
18556         * aliasing.h: Likewise.
18557         * Makefile.am: added "aliasing.c" and "aliasing.h".
18558         
18559 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18560
18561         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18562         OP_L opcodes.
18563
18564 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18565
18566         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18567         fp >= end_of_stack exit condition, as it is not needed, and it might
18568         become true for fp eliminated frames.
18569
18570 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18571
18572         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18573         coded offsets.
18574
18575 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18576
18577         * mini-arm.c: fixed alignment of doubles/longs to match
18578         the C ABI (bug #76635).
18579
18580 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18581
18582         * aot.c: fix compilation with --enable-minimal=aot.
18583
18584 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18585
18586         * mini-arm.c: fixed compatibility with the new
18587         floating point emulator package for compares.
18588
18589 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18590
18591         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18592
18593 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * mini-exceptions.c (print_stack_frame): Output to stderr.
18596         (mono_handle_native_sigsegv): Ditto.
18597
18598 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18601         OP_LCONV_TO_OVF_I implementation.
18602
18603         * mini-amd64.c: Add support for the throw->branch exception 
18604         optimization.
18605
18606         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18607         when the catch clause catches a more general exception, i.e. Object.
18608
18609 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18610
18611         * cpu-ia64.md: Remove unused opcodes.
18612
18613         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18614         specific defines for architectures defining USE_SIGACTION.
18615
18616         * mini-ia64.c: Fix some warnings.
18617
18618         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18619         version seemed to skip a frame.
18620
18621 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18624         only calls which are made to native code use this flag.
18625
18626 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18627
18628         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18629         varargs methods as well.
18630         
18631         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18632         which have save_lmf set. Reorganize methods prologs a bit.
18633
18634         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18635         debugger to the proper place.
18636
18637 2005-10-29  Martin Baulig  <martin@ximian.com>
18638
18639         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18640         when running inside the debugger until the debugger has support
18641         for it.
18642
18643 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18644
18645         * mini.h: Fix a warning.
18646
18647 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18648
18649         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18650         we expose publicly, this returns the string.
18651
18652 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18653
18654         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18655         with fp elimination.
18656
18657 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18658
18659         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18660         native stacktrace using the glibc 'backtrace' function if available.
18661
18662 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18663
18664         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18665
18666         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18667         handle SIGSEGVs received while in native code.
18668
18669         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18670         code, call mono_handle_native_sigsegv which will abort the runtime
18671         after printing some diagnostics, instead of converting it into a
18672         confusing NullReferenceException.
18673
18674 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18675
18676         * cpu-pentium.md: Remove unused opcodes.
18677
18678 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18679
18680         * mini-amd64.h (MonoLMF): Add rsp field.
18681
18682         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18683         the lmf too.
18684
18685 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18686
18687         * mini-codegen.c (get_register_spilling): Fix some warnings.
18688
18689 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18690
18691         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18692         elimination during exception handling. Enable fp elimination by
18693         default.
18694
18695         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18696         elimination.
18697
18698 2005-10-16  Martin Baulig  <martin@ximian.com>
18699
18700         * mini-exceptions.c
18701         (mono_debugger_run_finally): New public method for the debugger.
18702
18703 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18704
18705         * debug-mini.c (mono_debug_init_method): Fix warning.
18706
18707         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18708         the 'exname' parameter const to fix some warnings.
18709
18710 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18711
18712         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18713         introduced by the previous patch.
18714
18715 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18716
18717         * basic-float.cs: Add test for precision of float arithmetic.
18718
18719         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18720         when loading/storing single values from/to memory.
18721
18722         * mini.c (mono_jit_compile_method_with_opt): Create the function
18723         pointers in the correct domain.
18724
18725 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18726
18727         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18728         introduced by previous patch.
18729         
18730         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18731         when out_filter_idx is NULL.
18732
18733         * mini-exceptions.c: Don't run filter clauses twice during exception
18734         handling. Fixes #75755.
18735
18736 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18737
18738         * aot.c: Add support for ldflda wrappers.
18739
18740         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18741         #75902.
18742
18743 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18744
18745         * mini.c, mini.h: do not consider exception handlers blocks when
18746         setting up interface variables.
18747
18748 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18749
18750         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18751
18752 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18753
18754         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18755         causes a regression.
18756
18757         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18758
18759 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18762         of the OP_P definitions.
18763
18764         * TODO: Add a proposal for dealing with the CEE/OP mess.
18765
18766         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18767         optimizations from the x86 port.
18768
18769         * cpu-amd64.md: Ditto.
18770
18771         * basic.cs basic-long.cs: Add tests.
18772
18773 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18774
18775         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18776         Patrik Torstensson's implementation of my exception-handling
18777         optimization idea, when the exception object is not used
18778         (bug #62150).
18779
18780 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18781
18782         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18783         of the mul_imm optimizations from the old jit.
18784
18785 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18786
18787         * mini.c, liveness.c: patch by Patrik Torstensson and
18788         Zoltan Varga to improve performance in methods with
18789         exception clauses.
18790
18791 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18792
18793         * driver.c: Remove 'Globalization' entry from --version.
18794
18795 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18796
18797         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18798         there is a profiler interested in JIT events.
18799
18800         * aot.c: Load profile files produced by the AOT profiling module, and
18801         reorder methods based on the profiling info. Add a 'method_order' table
18802         to the AOT file to make mono_aot_find_jit_info work with the reordered
18803         methods.
18804
18805         * mini.h: Bump AOT file version info.
18806
18807 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18808
18809         * mini-arm.h: work around what looks like a gcc bug when optimizations
18810         are enabled.
18811
18812 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18813
18814         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18815         conditionals.  Use ...
18816         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18817
18818 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18821         to determine the amount of memory to copy when passing valuetypes.
18822
18823         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18824         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18825
18826 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18827
18828         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18829         information about aot.
18830
18831 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18832
18833         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18834         macros. This will allow a deadlock debugger to easily be plugged
18835         in.
18836
18837 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18838
18839         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18840
18841 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18842
18843         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18844         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18845         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18846         ($(arch_built)) [CROSS_COMPILING]: Error out.
18847
18848 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18849
18850         * aot.c: Add support for the no_special_static flag for classes.
18851
18852 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * Reapply reverted patches.
18855
18856         * *: Revert r50174 as well.
18857
18858         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18859
18860 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18861
18862         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18863
18864 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18865
18866         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18867         part of the SIG_HANDLER_SIGNATURE.  
18868
18869 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18870
18871         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18872         statistics.
18873
18874         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18875         introduced by previous patch.
18876
18877 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18878
18879         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18880         saved registers too.
18881
18882         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18883         upon the information returned by get_call_info ().
18884         
18885         * mini-x86.c (add_float): Fix stack size calculation.
18886         (mono_arch_call_opcode): Rewrite this so it works based up the
18887         information returned by get_call_info ().
18888         (mono_arch_get_this_vret_args): Ditto.
18889
18890 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18893         in cinfo to determine the registers which need to be used.
18894
18895 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18896
18897         * driver.c (mono_main): Add --server and --desktop flags. 
18898
18899 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18900
18901         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18902         registers as global registers.
18903
18904         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18905         longer needed with the new register allocator.
18906
18907         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18908
18909         * cpu-ia64.md: Remove unused opcodes.
18910         
18911         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18912         
18913 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18914
18915         * cpu-amd64.md: Remove unused opcodes.
18916
18917         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18918         needed with the new register allocator.
18919
18920         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18921         reg-reg moves.
18922
18923 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18924
18925         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18926
18927 2005-09-16  Martin Baulig  <martin@ximian.com>
18928
18929         * exceptions-amd64.c
18930         (throw_exception): Don't call mono_debugger_throw_exception() if
18931         we're a rethrow - see the FIXME in the code.
18932
18933 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18934
18935         * mini.c (mono_init_exceptions): This only works on some architectures.
18936         
18937 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18938
18939         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18940         on ia64.
18941
18942         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18943
18944         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18945         now in mini-exceptions.c.
18946
18947 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18950         now in mini-exceptions.c.
18951
18952 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18953
18954         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18955         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18956
18957         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18958         code into mini-exceptions.c. Add some assertions to it.
18959
18960 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18961
18962         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18963         (<software@solmersa.com>). Fix as errors on windows.
18964
18965 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18968         method info into the LMF.
18969
18970 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18971         
18972         * mini-ia64.c: Add proper unwind info for method epilogs.
18973
18974         * exceptions-ia64.c: Add some code to help debugging.
18975         
18976         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18977
18978         * mini-exceptions.c: Fix warning.
18979
18980 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18981
18982         * mini.c: Really fix build.
18983
18984         * mini-x86.c mini-amd64.c: Fix build.
18985
18986 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18987
18988         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18989
18990         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18991         some Interlocked methods as intrinsics.
18992
18993         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18994         for Thread methods as well.
18995
18996         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18997
18998         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18999
19000         * mini-ia64.c mini-x86.c mini-amd64.c 
19001         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
19002         OP_MEMORY_BARRIER.
19003         
19004         * mini.c (mono_init_exceptions): Fix build breakage.
19005
19006 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
19007
19008         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
19009         of instructions. Use the new ia64_unw_op macros for emitting unwind
19010         info.
19011
19012         * mini.c (mono_init_exceptions): Initialize exception handling
19013         related trampolines at startup.
19014
19015 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
19016
19017         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
19018
19019 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19020
19021         * mini.c: Handle type loading errors gracefully during compilation and
19022         throw the appropriate exception.
19023
19024 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
19025
19026         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
19027         for the mono binary.
19028
19029 2005-09-09  Martin Baulig  <martin@ximian.com>
19030
19031         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19032         the release.
19033
19034 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19035
19036         * mini-arm.h: use emulation for conv.r.un for the release.
19037
19038 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19039
19040         * mini-arm.c, objects.cs: more fixes and tests for them.
19041
19042 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19043
19044         * mini-arm.c: align structures to at least 4 bytes to be able
19045         to keep our current optimized memcpy.
19046
19047 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19048
19049         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19050
19051 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19052
19053         * mini.c: ignore SIGPIPE.
19054
19055 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19056
19057         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19058
19059         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19060
19061 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19062
19063         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19064
19065 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19066
19067         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19068         exception handling support.
19069         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19070         patch by Brian Koropoff <briank@marakicorp.com>).
19071
19072 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19073
19074         * mini.c: revert another 'optimization' which breaks when
19075         items on the eval stack need to be saved at a basic block end
19076         (bug #75940).
19077
19078 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19079
19080         * jit-icalls.c: for arrays, ensure we always provide
19081         lower bounds.
19082
19083 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19084
19085         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19086         
19087         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19088
19089 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19090
19091         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19092         arguments in their original register.
19093
19094 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19095
19096         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19097         memset/memcpy.
19098
19099         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19100         when ssapre is enabled.
19101
19102         * inssel-long.brg: Fix bug in previous patch.
19103
19104         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19105         multiplication by a constant.
19106
19107 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19108
19109         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19110         icc.
19111
19112         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19113         saving registers.
19114
19115 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19116
19117         * inssel-arm.brg: apply changes tested by Brian Koropoff
19118         <briank@marakicorp.com>.
19119
19120 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19121
19122         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19123         
19124 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19125
19126         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19127         to the same register if dreg is just a base register.
19128         (print_ins): Improve printing of membase opcodes.
19129
19130         * inssel-x86.brg: Add optimized ldind(reg) rules.
19131
19132         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19133
19134 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19135
19136         * mini.c: when running under valgrind, set the stack bottom for
19137         the GC at the actual approximate stack for the app (fixes running
19138         mono with valgrind).
19139
19140 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19141
19142         * mini.c: do no break at the first valuetype to init found
19143         (fixes bug #75791).
19144
19145 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19146
19147         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19148
19149 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19150
19151         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19152
19153 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19154
19155         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19156
19157 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19160
19161         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19162         code.
19163
19164         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19165         code.
19166
19167         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19168         methods.
19169
19170 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19171
19172         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19173
19174 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19177         in the tail recursion optimization.
19178
19179         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19180         debug info into the assembly file.
19181
19182         * iltests.il: Add test for filter regions.
19183
19184         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19185         initial stack of filter regions. Fixes #75755.
19186
19187 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19188
19189         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19190         stack requirements.
19191
19192 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19195         the check for an already compiled method on non-ia64 platforms.
19196         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19197         proper domain.
19198
19199         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19200
19201         * inssel-x86.brg: Add some optimized call rules.
19202
19203 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19206         method here.
19207
19208         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19209         mono_arch_patch_delegate_trampoline.
19210
19211         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19212
19213         * mini-trampolines.c: Fix build.
19214
19215         * mini-amd64.h: Add delegate trampolines.
19216
19217         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19218
19219         * inssel-amd64.brg: Add optimized call rules.
19220         
19221         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19222
19223         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19224
19225 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19226
19227         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19228         change.
19229
19230         * mini-ia64.c: Remove LMF fixmes.
19231
19232         * mini-ia64.h: Remove most fields from LMF.
19233
19234         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19235
19236         * mini-trampolines.c: Add support for IA64 function descriptors.
19237
19238         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19239         for IA64 function descriptors.
19240
19241 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19242
19243         * tramp-arm.c: patch the vtable for virtual calls. Added
19244         support code to register/unregister the LMF.
19245         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19246         more LMF work.
19247
19248 2005-08-19  Dick Porter  <dick@ximian.com>
19249
19250         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19251         bit value if needed.
19252
19253 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19254
19255         * mini.c (mini_get_method): Move handling of wrapper data here.
19256
19257         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19258
19259         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19260         virtual.
19261
19262         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19263         bblock->code does not remain empty.
19264
19265 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19266
19267         * arrays.cs: Add regression test for #75832.
19268
19269         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19270         rules. Fixes #75832.
19271
19272         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19273         instruction scheduling.
19274
19275 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19278
19279 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19280
19281         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19282
19283         * mini-codegen.c: Fix VC build.
19284
19285         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19286
19287 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19288
19289         * mini.h: fix signature for mono_register_opcode_emulation.
19290
19291 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19292
19293         * mini.c: Get rid of most of the helper_sig_... constants using
19294         mono_create_icall_signature ().
19295
19296 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19297
19298         * jit-icalls.c (helper_ldstr): New helper function.
19299
19300         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19301
19302         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19303         throw, load the string using a helper call instead of creating a string object.
19304
19305         * aot.c: Update after LDSTR changes.
19306
19307         * mini.h: Bump AOT file version.
19308         
19309         * aot.c: Save class size info into the AOT file. Print more statistics during
19310         compilation.
19311
19312         * mini.h: Bump AOT file version.
19313
19314         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19315         ordering of disasm cases. Fixes #74957.
19316
19317 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19318
19319         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19320         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19321         the generic code needed for the ARM port.
19322
19323 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19324
19325         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19326         inssel-arm.brg: more ARM features and fixes.
19327
19328 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19329
19330         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19331         ARM port work in progress.
19332
19333 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19334
19335         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19336
19337         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19338
19339         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19340
19341         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19342
19343         * *-ia64.*: Ongoing IA64 work.
19344         
19345         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19346
19347 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19348
19349         * TODO: Remove out-of-data todo stuff.
19350
19351         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19352         dead code.
19353
19354         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19355
19356         * mini.h: Bump corlib version.
19357
19358 2005-07-27  Martin Baulig  <martin@ximian.com>
19359
19360         * mini-codegen.c
19361         (create_copy_ins): Added `const unsigned char *ip' argument; set
19362         `copy->cil_code' from it.
19363
19364 2005-07-27  Martin Baulig  <martin@ximian.com>
19365
19366         * mini-exceptions.c (mono_handle_exception): Don't call
19367         mono_debugger_handle_exception() for filters.
19368
19369 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19372         as well.
19373
19374 2005-07-26  Martin Baulig  <martin@ximian.com>
19375
19376         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19377
19378         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19379         helper_compile_generic_method() if the method is actually virtual
19380         and non-final.
19381
19382 2005-07-26  Martin Baulig  <martin@ximian.com>
19383
19384         * mini.c
19385         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19386         public; this is now accessed directly by the debugger.
19387         (mono_generic_trampoline_code): Removed.
19388
19389         * debug-mini.c
19390         (mono_debug_init_method): Also add interncalls and wrappers.
19391
19392 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19393
19394         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19395
19396 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19399
19400 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19403
19404 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19407         getting TLS offsets on AMD64 too.
19408
19409 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19410
19411         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19412
19413 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19414
19415         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19416         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19417
19418 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19421
19422         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19423         to mini.c.
19424
19425         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19426         mono_sparc_is_virtual_call ().
19427         
19428         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19429
19430         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19431         trampoline parameters.
19432
19433         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19434         
19435         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19436         to mono_arch_get_vcall_slot_addr.
19437
19438         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19439         trampoline code.
19440
19441         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19442
19443 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19444
19445         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19446
19447 2005-07-19  Martin Baulig  <martin@ximian.com>
19448
19449         * exceptions-amd64.c (throw_exception): Call
19450         mono_debugger_throw_exception() here like we're doing it on i386.
19451
19452 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19453
19454         * mini-ia64.c: Add optimized TLS access support.
19455
19456 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19457
19458         * mini-exceptions.c: Ongoing IA64 work.
19459
19460         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19461
19462         * mini.c: Use the default optimization set when embedding. Fixes
19463         #75194.
19464
19465 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19468         of trampolines to a separate file.
19469
19470         * mini-trampolines.c: New file.
19471
19472         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19473         separate file.
19474         
19475         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19476         amd64/ia64 code.
19477
19478         * mini-codegen.c: Fix cygwin build.
19479
19480 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * mini.c: Add some minor changes needed by the IA64 port.
19483
19484         * *-ia64.*: Ongoing IA64 work.
19485
19486 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19487
19488         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19489         trampolines into arch-independent and arch-dependent parts.
19490
19491         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19492
19493 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19496
19497         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19498         the xp-regalloc-branch for amd64.
19499
19500         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19501         xp-regalloc-branch for x86.
19502
19503 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19506
19507 2005-07-06  Martin Baulig  <martin@ximian.com>
19508
19509         * mini.c
19510         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19511         (mono_jit_runtime_invoke): Likewise.
19512
19513 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19514
19515         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19516         on x86 too.
19517         
19518         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19519         without loading their metadata. Reorganize the file format so exception handling+
19520         debug info is kept separate from normal method info. Create MonoJitInfo 
19521         structures for methods lazily.
19522
19523         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19524         loading metadata.
19525         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19526
19527         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19528
19529         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19530         in AOT code.
19531
19532         * mini.h: Bump AOT file version.
19533
19534 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19535
19536         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19537
19538 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19539
19540         * Makefile.am (check-local): Call semdel-wrapper.
19541
19542 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19543
19544         * mini-x86.c: Revert the last change as it seems to break the build..
19545
19546 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19549         
19550         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19551
19552 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19553
19554         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19555         outside of the macro, so strange stuff doesn't happen with gcc4
19556         (NEW_AOTCONST_TOKEN): Likewise.
19557
19558 2005-06-28  Martin Baulig  <martin@ximian.com>
19559
19560         * mini.c (mini_class_is_system_array): New static method; use this
19561         instead of `klass->parent == mono_defaults.array_class' everywhere
19562         since this also works for the new generic array class.
19563
19564 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19565
19566         * inssel.brg: Remove warnings.
19567
19568 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19569
19570         * mini-ia64.c: Ongoing IA64 work.
19571
19572         * basic-float.cs: Add float->i1 conversion test.
19573
19574         * iltests.il: Add conv.u4 test.
19575
19576 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19577
19578         * inssel-long.brg: Fix bug caused by last change.
19579
19580 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19581
19582         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19583         BSDs.  Allows the x86 JIT to work on OSX86
19584
19585 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19588         u4->i8 conversion.
19589
19590         * mini-ia64.c: Ongoing IA64 work.
19591
19592 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * mini-ia64.c: Ongoing IA64 work.
19595
19596         * driver.c: Clean up jit_code_hash as well when using --regression.
19597
19598         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19599
19600         * basic-long.cs: Add tests for long->u4 conversion.
19601
19602 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19603
19604         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19605         that we do not depend on undefined C behavior: the order stuff
19606         gets evaluated within an expression. Fixes mono when compiled on
19607         GCC 4.
19608
19609 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * *-ia64.*: Ongoing IA64 work.
19612
19613         * aot.c: Lower memory usage while loading AOT methods.
19614
19615         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19616
19617         * mini.h: Bump AOT file format version.
19618
19619 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19622
19623 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19624
19625         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19626         not on callee assembly). Fixed some comments.
19627
19628 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19631         it gets proper disassembly.
19632         (emit_method_info): Remove some dead code.
19633
19634         * mini.c (mini_method_compile): Allways allocate the GOT var in
19635         mono_method_to_ir for emulating opcodes.
19636
19637 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19640         before freeing the code memory. Fixes #74990.
19641
19642         * objects.cs: Add regression test for #74992.
19643
19644         * liveness.c: Extend live ranges of arguments to the beginning of the
19645         method. Fixes #74992.
19646
19647         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19648         so it points into the faulting instruction.
19649
19650 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19651
19652         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19653
19654         * *-ia64.*: Ongoing IA64 work.
19655
19656         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19657
19658 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19659
19660         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19661
19662         * *-ia64.*: Ongoing IA64 work.
19663
19664 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * basic-long.cs: Add tests for add/sub.ovf.
19667
19668         * basic.cs: Add tests for sub.ovf.
19669
19670         * *-ia64.*: Ongoing IA64 work.
19671
19672 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * *-ia64.*: Ongoing IA64 work.
19675
19676         * basic.cs: Add conv.ovf.i4.un test.
19677
19678 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19679
19680         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19681         
19682 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19683
19684         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19685
19686 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19687
19688         * *-ia64.*: Ongoing IA64 work.
19689
19690 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19691
19692         * trace.[ch]:
19693         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19694
19695 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19696
19697         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19698
19699 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19702
19703         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19704         of a call is callable by a near call.
19705
19706 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * mini-ia64.c: Ongoing IA64 work.
19709
19710 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19711
19712         * genmdesc.c: Make the generated array non-static.
19713
19714         * inssel-long.brg: Fix LSHR_IMM rule.
19715
19716         * *-ia64.*: Ongoing IA64 work.
19717
19718         * *-ia64.*: Ongoing IA64 work.
19719
19720 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * *-ia64.*: Ongoing IA64 work.
19723
19724         * *-ia64.*: Ongoing IA64 work.
19725         
19726         * mini-ia64.c: Ongoing IA64 work.
19727
19728         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19729
19730 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19731
19732         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19733         
19734         * objects.cs basic-long.cs: Move some tests to objects.cs.
19735
19736 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * *-ia64.*: Ongoing IA64 work.
19739
19740         * iltests.il: Add a new test.
19741
19742         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19743         newobj. Fixes #75042.
19744
19745 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19746
19747         * *-ia64.*: Ongoing IA64 work.
19748         
19749         * *-ia64.*: Ongoing IA64 work.
19750         
19751         * *-ia64.*: Ongoing IA64 work.
19752
19753         * basic.cs objects.cs: Move tests accessing static variables as well.
19754
19755         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19756
19757 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19760
19761         * driver.c: Always print failed tests.
19762
19763         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19764         frame pointer.
19765
19766         * *ia64*: Ongoing IA64 work.
19767
19768 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * basic.cs: Add tests for add.ovf. Fix warnings.
19771
19772 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19773
19774         * driver.c (mono_main): Avoid crash if no argument is passed to
19775         --break;  Do not use g_error, but f_printf.   And fix all other
19776         ocurrences of the same crash.
19777
19778 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19779
19780         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19781         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19782         Fixes #74742.
19783
19784 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * *-ia64.*: Add beginnings of IA64 backend.
19787
19788         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19789
19790 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19793         Fixes #74925.
19794
19795         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19796
19797         * mini-amd64.c: Fix a warning.
19798
19799 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19802         in float_neg. Fixes #74897.
19803
19804         * mini-amd64.c (emit_call): Fix another near call bug.
19805
19806 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19807
19808         * declsec.c: Keep the appdomain information in the structure. Added a 
19809         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19810         value gets overwritten).
19811         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19812         an MonoAppDomain member to MonoSecurityFrame.
19813         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19814         used in the stack walk. Now use a MonoArray which grow (double) when
19815         it gets full.
19816
19817 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19818
19819         * mini.c: Re-enabled runtime cleanup, since running threads should
19820         now properly stop when exiting.
19821
19822 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * mini-codegen.c: New file contaning the arch-independent local
19825         register allocator. Not used by any architectures yet.
19826
19827         * mini.h linear-scan.c: Merge some changes from the 
19828         mini-xp-local-regalloc branch.
19829
19830 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19831
19832         * mini-amd64.c (emit_call): Fix calls to native functions when the
19833         runtime is compiled as a shared library. Fixes #74756.
19834
19835         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19836         on a literal field. Fixes #74751.
19837
19838 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19839
19840         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19841
19842 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19843
19844         * objects.cs: Add missing null casting test.
19845
19846 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19849         in wrapper methods. Also rename 'address' variable to 'offset'.
19850
19851 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19852
19853         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19854         warnings.
19855         
19856         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19857
19858         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19859         work on windows.
19860
19861 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19862
19863         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19864
19865 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19868         just the last bytes.
19869
19870 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * aot.c (mono_compile_assembly): Fix warning.
19873
19874         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19875         by the _MSC_VER stuff.
19876
19877 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19878
19879         * inssel-long.brg: Fix #74588.
19880
19881         * cpu-amd64.md: Fix #74591.
19882
19883         * iltests.il: Add new regression tests.
19884
19885 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19888         valuetype.
19889
19890 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19893
19894         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19895         from Bill Middleton <flashdict@gmail.com>.
19896
19897 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * arrays.cs: Add new regression test. Fix warnings.
19900
19901 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19904         and leakage in CKFINITE.
19905
19906         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19907         this to a null op since it is called on amd64 too.
19908
19909         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19910
19911         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19912         body since this is not used on amd64.
19913         
19914         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19915
19916         * mini-amd64.c: Remove obsolete fixmes.
19917
19918         * mini.c (print_method_from_ip): Fix debugging support.
19919
19920 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19921
19922         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19923         so that expressions that don't give much gain are not reduced.
19924         * ssapre.h: Likewise.
19925
19926 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19929
19930         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19931
19932         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19933
19934 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19937
19938         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19939
19940 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19941
19942         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19943         stack touching.
19944
19945         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19946
19947         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19948
19949         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19950
19951         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19952         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19953
19954         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19955
19956         * mini-x86.c: Fix up stack overflow handling.   
19957
19958         * exceptions.cs: Add new regression test.
19959
19960 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19963         mono_jit_thread_attach.
19964
19965         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19966
19967 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19970         avoid calling constructors using callvirt.
19971
19972         * inssel.brg: Fix #74073.
19973
19974 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19975
19976         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19977         compilation with non-GCC compilers.
19978         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19979         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19980
19981 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19982
19983         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19984         klass->interface_offsets (will likely fix bug#74073).
19985
19986 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19989
19990 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19993         to amd64_div_reg_size ().
19994         
19995         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19996
19997 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
20000
20001 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
20004
20005 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
20008         
20009         * mini.c (mono_precompile_assembly): Load and precompile referenced
20010         assemblies as well. Fixes #74015.
20011
20012 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
20015
20016 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
20017
20018         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
20019         a lot of checks and (anyway) permissions cannot work until corlib is 
20020         loaded.
20021
20022 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
20023
20024         * mini-ppc.c: fixed ABI issue on sysv/ppc.
20025
20026 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20027
20028         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20029         calls (fixes bug#72824).
20030
20031 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20032
20033         * mini.c: fix tail recursion elimination (see test in bug#73936).
20034
20035 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20036
20037         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20038         some fp functions in sse2 mode.
20039
20040 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20041
20042         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20043
20044 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * mini.h mini.c: Add mono_get_jit_tls_key ().
20047
20048         * mini-x86.c: Enable fast TLS support on windows.
20049
20050 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20051
20052         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20053         * mini.c: Check for p/invoke method when generating code. If a
20054         p/invoke method, or it's class, isn't decorated with [Suppress
20055         UnmanagedCodeSecurity] then generate code to call System.Security.
20056         UnmanagedDemand (only if the security manager is active).
20057
20058 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20061         last change as it seems to cause strange crashes.
20062         
20063 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20064
20065         * *.c: handle unsafe function pointers where needed.
20066
20067 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini.c (mono_jit_free_method): Remove the fixme too.
20070
20071 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20072
20073         * mini.c: As discussed, make the code actually free the delegate
20074         thunk now, to enable the debugging of delegate problems, use
20075         MONO_DEBUG=1 when running Mono. 
20076
20077         This takes also care of parts of the leaks as seen by Joe.
20078
20079 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20080
20081         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20082         thread_tls_offset calculation.
20083
20084 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20085
20086         * declsec.c: Reworked linkdemand checks for icall. The previous code
20087         was using the declaration code (untrusted) and didn't work as expected
20088         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20089         specific case.
20090
20091 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20092
20093         * iltests.il: Add new localloc test.
20094
20095         * mini-amd64.c: Handle large stack allocations the same way as on
20096         windows if stack overflow handling is working.
20097         
20098         * mini-amd64.c: Allocate the signal stack using mmap.
20099
20100         * mini.c (sigsegv_signal_handler): Fix reading of context.
20101
20102         * mini-exceptions.c: Fix up stack overflow handling.
20103
20104         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20105
20106         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20107
20108         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20109
20110         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20111
20112         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20113         tramp_init functions as they are no longer needed.
20114
20115 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20118         
20119         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20120
20121         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20122         
20123         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20124         support that now.
20125
20126         * mini-ops.h: Add OP_LMUL_IMM.
20127
20128         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20129         long mul/div opcodes as intrinsic.
20130
20131         * mini-amd64.c (emit_call): Handle the case when the callee might be
20132         an AOT method.
20133
20134 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20137         extra safe.
20138         
20139         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20140
20141         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20142
20143 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20144
20145         * mini.c (mono_codegen): Don't leak here, to help people running
20146         monogrind.
20147
20148 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20149
20150         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20151         conversions in sse2 mode.
20152
20153         * basic-float.cs: Add regression test.
20154         
20155         * mini-amd64.c: Reenable sse2.
20156
20157 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20160
20161 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20162
20163         * driver.c: Copyright text should include 2005.
20164         
20165 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20166
20167         * cpu-amd64.md (load_membase): Fix more max lengths.
20168
20169 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20170
20171         * cpu-amd64.md (load_membase): Fix max length.
20172
20173         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20174
20175         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20176
20177         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20178         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20179
20180         * basic-float.cs: Add rounding regression test.
20181
20182         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20183
20184 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20185
20186         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20187         structures in registers for pinvoke wrappers.
20188
20189 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20192
20193 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20194
20195         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20196         wrapper to mono_jit_thread_attach.
20197
20198         * mini.c (mini_jit_thread_attach): New jit icall.
20199
20200         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20201         native->managed wrappers.
20202
20203         * exceptions.cs: Add new regression test.
20204
20205         * mini.c (optimize_branches): Check regions in the cbranch to throw
20206         block case as well. Fixes #73242.
20207
20208 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20209
20210         * mini.c: thread safety fixes.
20211
20212 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20213
20214         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20215         patching stuff, since delegates use jump trampolines so there is
20216         no caller.
20217
20218         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20219         jump trampolines.
20220         
20221         * tramp-amd64.c: Fix build.
20222
20223         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20224         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20225
20226         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20227         Rename this to mono_arch....
20228         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20229
20230         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20231
20232         * mini-amd64.c (emit_call): If both the caller and the callee is
20233         guaranteed to have 32 bit addresses, emit a normal call.
20234
20235         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20236
20237         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20238         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20239         method_ptr inside delegates.
20240
20241 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20244         invalidated. Fixes #73001.
20245
20246         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20247
20248         * mini-x86.c: Only use stdcall for pinvokes on windows.
20249
20250 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20251
20252         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20253         * mini-x86.c: remove unreliable __thread var offset detection,
20254         use the correct accessors and enable by default.
20255
20256 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20257
20258         * mini.c (mono_jit_free_method): Fix memory leak.
20259
20260 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20263
20264 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20265
20266         * cpu-amd64.md: Fix lengths of atomic opcodes.
20267
20268 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20269
20270         * driver.c: try to not imply using ICU is any good.
20271
20272 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20273
20274         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20275         functions as inline ops.
20276
20277         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20278         some Interlocked functions as inline ops.
20279
20280         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20281
20282         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20283
20284         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20285
20286         * mini.c: Add support for OP_NOT_TAKEN.
20287
20288         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20289         structures in registers for pinvoke wrappers.
20290
20291         * mini-amd64.c: Fix warnings.
20292
20293 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20296
20297         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20298
20299         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20300         address instead of loading the address from it.
20301
20302         * mini-x86.c: Add support for returning small structs in registers
20303         on Win32. Fixes part of #70864.
20304         
20305 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * trace.c (get_token): Improve error checking.
20308
20309 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20310
20311         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20312
20313 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20314  
20315         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20316         it can be reused for MonoClass.
20317         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20318         _LINKDEMAND.
20319
20320 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20321
20322         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20323         instead of a MonoReflectionMethod. The method information wasn't used
20324         when displaying SecurityException details (but will be now).
20325
20326 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20327
20328         * Makefile.am : windows build fix.
20329
20330 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20331
20332         * iltests.il: Add new regression test.
20333
20334         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20335         #72522.
20336
20337 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20338  
20339         * mini.c: Moved linkdemand check into helper function check_linkdemand
20340         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20341         LDFTN, LDVIRTFTN).
20342
20343 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20344
20345         * declsec.c: Added statistics counter for different kinds of 
20346         LinkDemands.
20347         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20348         (and commented) declaration.
20349         * mini.c: Added statistics counter for security Demand code 
20350         generation. Added display of security statistics.
20351
20352 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20355         Fix compilation errors under gcc-2.95.
20356
20357 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20358
20359         * mini.c, driver.c: Use the new jit trampoline hashtable
20360
20361 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20362
20363         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20364
20365 2005-02-11  Martin Baulig  <martin@ximian.com>
20366
20367         * debug-mini.c (mono_debug_close_method): Free the line number array.
20368
20369 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20372         icalls.
20373
20374         * mini.h: Bump AOT file format version. 
20375
20376 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20377
20378         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20379         APTC and P/Invoke.
20380         * declsec.h: Added macros to get/set lazyly initialized security 
20381         informations about assemblies. Added new enum for different type of
20382         possible LinkDemand violation. Added function to check LinkDemands.
20383         * mini.h: Added a field to MonoCompile to hold any security violation
20384         detected when JITting a method (so it can be thrown later).
20385         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20386         and CEE_CALLVIRT. Added code to throw exception at the end of
20387         mini_method_compile (note: the exception is unhandled right now).
20388
20389 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20390
20391         * mini.c, jit-icalls.c: use the managed implementation of
20392         memset for initobj and memset, to avoid managed <-> unmanaged
20393         transitions.
20394
20395 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20396
20397         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20398         optimization if it would need a GOT var.
20399
20400         * basic.cs: Add tests for constant propagation and switch statements.
20401
20402         * ssa.c: Fix out-of-range constant propagation and switch statements.
20403
20404 2005-02-09    <vargaz@freemail.hu>
20405
20406         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20407
20408 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20411
20412 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20413
20414         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20415
20416 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20417
20418         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20419         arithmetic operations.
20420
20421 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20422
20423         * mini-ppc.c: add a workaround for broken user code that
20424         DllImports vararg functions with non-vararg signatures.
20425
20426 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20427
20428         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20429         meaningfull error message for assemblies written in Managed C++.
20430
20431         * tramp-amd64.c mini-amd64.h: Add support for 
20432         create_trampoline_from_token ().
20433
20434         * aot.c mini-x86.c abcremoval.c: Applied patch from
20435         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20436
20437 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20438
20439         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20440         which takes a MonoImage/token as parameter instead of a MonoMethod.
20441
20442         * aot.c: Use the new trampoline for initializing vtables.
20443
20444         * aot.c: Add support for ldfld/stfld_remote wrappers.
20445
20446         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20447         rules for compare <MEM>, IMM.
20448
20449         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20450
20451         * aot.c: Handle inherited finalizers correctly.
20452
20453 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20454
20455         * inssel.brg (stmt): Add a missing _setup_... ().
20456
20457         * aot.c: Save some parts of the class state to the AOT file and use it
20458         to recompute that state when a class is initialized.
20459
20460         * mini.c: Install AOT hooks into the runtime.
20461
20462         * mini.h: Bump AOT file format version.
20463         
20464         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20465         Fixes #72148.
20466
20467         * iltests.il: Add new test.
20468
20469 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20470
20471         * mini.c: fix typo.
20472
20473 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20474
20475         * mini.c: setup the statistical profiler in the thread attach
20476         callback to cope with the new single thread code.
20477
20478 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20479
20480         * mini-ppc.c: ensure we have enough room for the profiler
20481         calls (fixed bug#72084).
20482
20483 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20486         it.
20487
20488 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20489
20490         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20491
20492 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20493
20494         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20495         to succesfully execute parrotbench).
20496         * ssapre.h: Likewise.
20497
20498 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20499
20500         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20501         variable for stores to method arguments (fixes a SSAPRE issue).
20502
20503 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20504
20505         * mini.c: handle value types in dup, fixes gen-112.cs.
20506
20507 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20508
20509         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20510         sequence for calls in dynamic methods to avoid thunks.
20511
20512 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20513
20514         * mini.c: correctly remove dynamic methods from the hashtable.
20515
20516 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20517
20518         * driver.c: Disabled SSAPRE until fix the bug that appears
20519         in IronPython's parrotbench.
20520
20521 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20524
20525         * mini.c (mono_method_to_ir): Revert the previous change.
20526         
20527         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20528         when AOT compiling.
20529
20530         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20531         mono_jit_info_table_find () etc. when running under valgrind.
20532
20533         * inssel.brg: Fix warnings.
20534
20535         * mini-exceptions.c: Fix warnings.
20536
20537 2005-01-31  Martin Baulig  <martin@ximian.com>
20538
20539         * driver.c (compile_all_methods_thread_main): Don't try to compile
20540         generic methods or anything which has type parameters.
20541
20542 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20543
20544         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20545
20546         * TestDriver.cs: Add --verbose flags.
20547
20548         * graph.c ssa.c: Fix 64 bit warnings.
20549         
20550         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20551         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20552         Fix 64 bit warnings.
20553
20554         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20555         variable not spotted by gcc.
20556         
20557         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20558         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20559         X86_COMPARE_MEMBASE opcodes.
20560
20561         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20562
20563 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20564
20565         * *: MonoMethod->signature might be NULL now. You *MUST* use
20566         mono_method_signature.
20567
20568 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20569
20570         * driver.c (compile_all_methods_thread_main): Compile the methods
20571         without invoking cctors.
20572
20573 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20574
20575         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20576         * basic-calls.cs: test for the above.
20577
20578 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20579
20580         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20581         MonoJitInfo changes.
20582
20583 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20586         eagerly if it contains dynamic methods.
20587         
20588         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20589
20590         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20591         trace, it is now computed by an icall from trace_ips.
20592         
20593         * mini-exceptions.c: Fix a warning.
20594
20595 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20596
20597         * mini-exceptions.c: don't bother getting stack trace info if
20598         it's not going to be used.
20599
20600 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20601
20602         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20603         ssapre-mini-ops.h.
20604
20605 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20606
20607         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20608
20609         * aot.c: Avoid calling mono_method_get_header () if not needed.
20610
20611         * mini.h: Bump AOT file format version.
20612         
20613         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20614
20615         * mini.c (mono_print_tree): Print more info for calls.
20616
20617 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20618
20619         * declsec.h: Remove warning by adding missing include for marshal.h
20620
20621 2005-01-26  Martin Baulig  <martin@ximian.com>
20622
20623         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20624         `ip' twice.
20625
20626 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20629         flags.
20630
20631         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20632
20633         * aot.c (mono_compile_assembly): Fix a warning.
20634
20635 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20636
20637         * declsec.c: Look for security attributes on the original MonoMethod 
20638         (and not the wrapped one). This fix permissions on icalls.
20639
20640 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20643
20644         * mini.c (mono_allocate_stack_slots): Add a fixme.
20645
20646         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20647
20648 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20649
20650         * inssel.brg: optimize casts of sealed types (more
20651         optimizations waiting for fixes in remoting).
20652
20653 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20654
20655         * inssel.brg (stmt): Add another dummy rule.
20656
20657         * driver.c: Fix warnings.
20658
20659         * driver.c (mono_main): If running under valgrind, instruct glib to use
20660         the system allocation functions so valgrind can track the memory
20661         allocated by the g_... functions.
20662
20663         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20664
20665         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20666
20667         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20668
20669         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20670         variables in try regions.
20671
20672         * mini.c (mini_method_compile): Don't disable optimizations on large
20673         methods when AOT compiling.
20674
20675         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20676         allocate stack slots. Not yet used.
20677
20678 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20679
20680         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20681
20682 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20683
20684         * mini-ppc.c: make the branch info relative as the code
20685         buffer can be reallocated.
20686
20687 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20688
20689         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20690         * driver.c: Removed the AOT/security restriction. Now initialize the
20691         security manager (in metadata) if --security is used.
20692         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20693         rather than the pointer to declarative security, when AOT is used.
20694
20695 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20696
20697         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20698         basic blocks, reduced intrinsic exception throwing code size.
20699
20700 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20701
20702         * driver.c (mini_usage): Reorder the usage screen.
20703
20704 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20705
20706         * mini.c (mono_resolve_patch_target): Fix warning.
20707
20708 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20709
20710         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20711         previous patch.
20712
20713         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20714
20715         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20716         breaks the amd64 build.
20717
20718         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20719         register allocation. Fixes #71454.
20720
20721         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20722
20723         * arrays.cs: Add new regression test.   
20724
20725 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20726
20727         * ssapre.c: Turned usage of snprintf to GString.
20728         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20729         (I left it on by mistake in my previous commit).
20730
20731 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20732
20733         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20734         on cond branch optimization (fixes bug# 71515).
20735
20736 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20737
20738         * abcremoval.c: Fixed bug 71062.
20739         * abcremoval.h: Likewise.
20740
20741 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20742
20743         * mini.c: Added a new functionality to optimize_branches, the removal
20744         of useless basic blocks, and fixed some problem in the removal of
20745         critical edges; some utility functions added for both purposes.
20746         * ssapre.c: Added complex expression support, and fixed bug 70637.
20747         * ssapre.h: Likewise.
20748         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20749         enabled in SSAPRE.
20750         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20751         * driver.c: Re-enabled SSAPRE.
20752
20753 2005-01-19  Martin Baulig  <martin@ximian.com>
20754
20755         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20756         the result of mono_get_method_constrained().
20757
20758 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20759
20760         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20761         manager.
20762
20763 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20764
20765         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20766         be detected.  Fixes #59296.
20767
20768 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20769
20770         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20771         which can happen. Fixes #71361.
20772
20773 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20776         manager.
20777
20778 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20779
20780         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20781         appdomain-unload.exe to fail.
20782         
20783         * mini.c: Fix some memory leaks.
20784
20785 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20786
20787         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20788         Fixed bug and sped up some codepaths.
20789
20790 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * mini.c: Fix some memory leaks.
20793
20794         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20795         conversion.
20796
20797         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20798
20799         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20800         #71320.
20801
20802         * iltests.il: Add regression test for #71320.
20803
20804 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20805
20806         * mini.c (mono_codegen): Fix installation of profiler hooks.
20807
20808         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20809
20810 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20811
20812         * mini.h, mini.c, cfold.c: optimize access to enum
20813         readonly fields, too. Eval conditional branches if possible
20814         to perform unreachable code removal in more cases.
20815
20816 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20817
20818         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20819
20820         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20821         code manager.
20822
20823         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20824         WinXP DEP. Fixes #71244.
20825
20826 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20827
20828         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20829
20830 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20831
20832         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20833
20834 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20835
20836         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20837         changes.
20838
20839         * mini.h: Bump AOT version.
20840
20841         * mini.h (MonoCompile): Change exvar to a hash table.
20842
20843         * mini.c: Allocate a separate exvar for each handler block.
20844
20845         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20846
20847         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20848         ex var with the pending exception and only throw if the two are equal.
20849         Fixes #68552.
20850         
20851         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20852
20853         * mini-x86.c: Fix warnings.
20854
20855         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20856         used by all the ports now.
20857
20858         * aot.c: Add write-symbols and save-temps options.
20859
20860 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20863
20864 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20865
20866         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20867         operations.
20868
20869         * tramp-s390.c: Check vtable slot belongs to the domain.
20870
20871         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20872         as per other platforms.
20873
20874         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20875
20876 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20877
20878         * driver.c: we don't run the Main() code in a subthread anymore.
20879
20880 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20881
20882         * mini.c: added experimental rtc support in the statistical
20883         profiler: if the user has the permission, more accurate statistics
20884         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20885         The MONO_RTC value must be restricted to what the linux rtc allows:
20886         power of two from 64 to 8192 Hz.
20887
20888 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20891
20892 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20893
20894         * mini-ppc.c: better icache flush for smp.
20895
20896 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20899
20900         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20901         amd64 port, not yet used.
20902
20903 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20906         a struct type.
20907
20908 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20909
20910         * driver.c: Added --security option to activate the security manager.
20911         Right now this will allow code generation for declarative demands and
20912         is disabled when AOT is specified.
20913         * mini.c: Add code generation for declarative security demands.
20914         * mini.h: Add mono_use_security_manager as an extern gboolean.
20915
20916 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20917
20918         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20919         emitting more dense assembly code.
20920
20921         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20922         exception throwing stuff.
20923
20924 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20927         dead code.
20928
20929         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20930         left in by mistake.
20931
20932         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20933         fixed.
20934
20935         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20936
20937         * tramp-*.c: Only patch vtable slots if the object is in the current
20938         domain. Fixes appdomain-unload.exe.
20939
20940         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20941         
20942         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20943         x86 branch.
20944
20945 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * mini.c (reverse_branch_op): New helper function.
20948
20949         * mini.c (optimize_branches): Run the new optimization only on 
20950         platforms which support it. Also reverse all kinds of branches.
20951
20952         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20953
20954         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20955         a throw statement.
20956
20957         * mini.c (optimize_branches): Reverse not-equals branches if the false
20958         bblock is a throw. This happens a lot of time with argument checking in
20959         corlib.
20960
20961         * mini.c (mono_codegen): Add support for placing basic blocks after
20962         the function epilogue.
20963
20964         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20965         function epilogue.
20966         
20967 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20968
20969         * mini.c (setup_stat_profiler): Only set this up if the platform
20970         supports ITIMER_PROF.
20971
20972 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20973
20974         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20975         previous patch.
20976
20977         * inssel.brg: Fix a warning.
20978
20979 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20980
20981         * mini.c: added support for statistical profiler 
20982         (run with: --profile=default:stat).
20983
20984 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20987
20988         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20989
20990         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20991         related to global registers from the amd64 port.
20992
20993 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20994
20995         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20996
20997         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20998         with global registers.
20999         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
21000
21001         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
21002
21003 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
21004
21005         * debug-mini.c (encode_value): Fix off-by-one.
21006
21007         * aot.c (encode_value): Likewise.
21008
21009         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
21010
21011 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21012
21013         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
21014         AOT.
21015
21016         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
21017         
21018         * aot.c (emit_method_info): Increase size of temp buffer.
21019
21020         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
21021         the AOT case.
21022
21023 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * aot.c (emit_method_info): Fix build.
21026         
21027         * aot.c: Further rework of the AOT file format to reduce the size of
21028         the method info data.
21029
21030         * mini.h: Bump AOT file format version.
21031
21032 2004-12-27  Martin Baulig  <martin@ximian.com>
21033
21034         * mini.c (mini_get_method): New static method; call
21035         mono_get_method_full() and mono_get_inflated_method().
21036         (mono_method_to_ir): Use mini_get_method() instead of
21037         mono_get_method_full(). 
21038
21039 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21040
21041         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21042
21043 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21044
21045         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21046
21047         * inssel-amd64.brg: Add some optimization rules.
21048
21049 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21050
21051         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21052         standard not GC'd stuff is fine.
21053
21054 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21055
21056         * aot.c: Rework the AOT file format to get rid of most of the global
21057         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21058
21059         * mini.h: Bump AOT file format version.
21060         
21061 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * mini.h: Bump AOT file format version.
21064
21065         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21066         address is inside a GOT.
21067
21068         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21069
21070         * cpu-pentium.md: Increase the maximum size of some instructions which
21071         might involve a got access.
21072         
21073         * mini.c (get_method_from_ip): Another debug helper function.
21074
21075         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21076         when got var accesses are created during the decompose phase.
21077
21078         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21079
21080         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21081         argument mini_compile_method and to MonoCompile, and use this to
21082         determine whenever a given method is compiled for AOT. This allows the
21083         other methods compiled during AOT compilation to be free of AOT stuff,
21084         so the backends does not need to add special support for them by
21085         creating a fake GOT etc.
21086
21087         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21088         longer needed.
21089
21090 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21091
21092         * mini.c (mono_method_to_ir): It turns out that some of the
21093         x-appdomain wrappers are lax with types, so just ignore this for
21094         all wrappers.
21095
21096         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21097         at the vtable->klass. If it is non-shared code we can just use the
21098         vtable.
21099
21100 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21101
21102         * mini-ppc.c: access MonoDomain from tls, too.
21103
21104 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21105
21106         * declsec.c: Removed unused variable (and related warning ;-)
21107
21108 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21109
21110         * iltests.il: New test for LDELEMA on an array of ref types.
21111
21112         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21113         all ldelema's on reftypes.
21114         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21115         it was the wrong place to put it.
21116
21117         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21118         register to pop to make this cleaner, at the request of Paolo.
21119
21120 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21121
21122         * mini-ops.h (OP_GETHASHCODE): New op.
21123
21124         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21125
21126         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21127         operation.
21128
21129         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21130         by 25%.
21131         
21132         * mini-x86.c (mono_arch_output_basic_block): Rather than
21133
21134         add ebp, 4
21135
21136         Emit
21137
21138         pop edx
21139
21140         The first is 3 bytes while the second is 1. This saves 36 kb on
21141         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21142         see a small boost because of icache locality.
21143
21144         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21145
21146 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21147
21148         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21149         started code sharing with the generic code.
21150
21151 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21152
21153         * mini-ppc.c, cpu-g4.md: added code for direct access to
21154         tls data slots.
21155
21156 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21157
21158         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21159          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21160         to OP_TLS_GET.
21161
21162 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21163
21164         * declsec.c|h: Added functions to cache the declarative stack modifiers
21165         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21166         structure.
21167         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21168         created. Register internal calls for System.Security.SecurityFrame::
21169         _GetSecurityFrame and _GetSecurityStack.
21170         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21171         the definitions for the new stack walk/callback mechanism.
21172         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21173         first security frame for LinkDemands and InheritanceDemands) and
21174         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21175         from lupus.
21176         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21177         walk initialization (lupus).
21178
21179 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21180
21181         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21182         idiom.
21183         (handle_loaded_temps): Do not create a temporary variable for
21184         things that we know are temps. They will never be modified.
21185         (mono_spill_call): Set MONO_INST_IS_TEMP
21186         (mono_emulate_opcode): ditto
21187         (emit_tree): ditto
21188         (mono_method_to_ir.CEE_DUP): ditto
21189
21190 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21191
21192         * mini.c (type_to_eval_stack_type): Make this handle the void type
21193         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21194         (emit_tree): use ip_in_bb to special case some common idioms
21195         Update all callers to pass in the IP.
21196         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21197
21198         This gives us a nice 2% speedup in mcs bootstrap.
21199
21200         * mini-x86.c (peephole_pass): Peephole pass to make
21201         mov  [foo], eax
21202         push [foo]
21203
21204         into
21205
21206         mov [foo], eax
21207         push eax
21208
21209         * mini.c (ip_in_bb): new method.
21210         (mono_method_to_ir): use this method rather than doing the hash
21211         lookup ourselves.
21212
21213         * linear-scan.c (mono_linear_scan): When expiring actives, you
21214         don't need to keep around variables that expire on this
21215         instruction. This makes it so that:
21216              a = b + 1
21217         will turn into:
21218              store (ebx add (ebx, 1))
21219         which will become
21220              add ebx, 1
21221
21222 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21225         combination to avoid doing two copies. Fix up problems with previous
21226         patch.
21227
21228         * mini.c: Fix 64 bit warnings.
21229
21230         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21231
21232 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21233
21234         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21235         changes from the x86 code.
21236
21237         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21238
21239 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21242         throwing code to reduce its size, unify the AOT and non-aot code and 
21243         get rid of relocations in the AOT case.
21244
21245         * mini-x86.h mini.c exceptions-x86.c 
21246         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21247         raise corlib exceptions which doesn't require relocations in the 
21248         caller.
21249
21250         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21251
21252 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21253
21254         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21255         needed.
21256
21257         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21258         in the AOT case.
21259
21260 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21261
21262         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21263         with add function when used from Inc/dec atomic 
21264         functions. Re-enabled optimization on x86.
21265         * mini-ops.h: renamed atomic_add functions to
21266         allow _add to match the Interlocked::Add and
21267         _add_next to match Interlocked::Inc/Dec.
21268
21269 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21270
21271         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21272         linking of BBs to the end BB, and enabled SSAPRE also with
21273         consprop and copyprop (which was prevented by that bug).
21274
21275 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21276
21277         * mini-x86.c: disabling the Interlocked optimizing code. 
21278
21279 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21280
21281         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21282         file version check.
21283         
21284 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21285
21286         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21287         interlocked optimization due lack of support on x86, rewrote 
21288         exchange to take into account that base may be in eax.
21289         
21290         xsp works again; activated Interlocked optimizing code.
21291         
21292 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21293
21294         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21295
21296 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21297
21298         * mini-ops.h: Add new opcodes.
21299
21300         * mini.h: Add new patch types. Add got_var to MonoCompile.
21301
21302         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21303         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21304         make it work with all kinds of patchable code.
21305
21306         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21307         address of the GOT, and referencing entries in the GOT.
21308
21309         * mini.c: Add code to load the GOT address if needed by an opcode.
21310
21311         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21312         independent AOT code on the x86 using an elf-style Global Offset Table.
21313
21314 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21315
21316         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21317
21318 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21319
21320         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21321         when running xsp.
21322
21323 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21324
21325         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21326         of Interlocked:Increment/Decrement/Add as inline ops.
21327         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21328
21329 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21330
21331         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21332         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21333
21334 2004-12-12  Duncan Mak  <duncan@ximian.com>
21335
21336         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21337         again. `patch_info->table_size' is no longer valid after Zoltan's
21338         commit #37636.
21339
21340 2004-12-12  Martin Baulig  <martin@ximian.com>
21341
21342         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21343         if we are the "real" method, ie. not an inlined method inside it.
21344
21345 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21346
21347         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21348         before we look in the special fields table. This fixes
21349         ../tests/thread-static-init.cs.
21350
21351 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21352
21353         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21354         for Array get_Rank and get_Length. Fixes bug #70465.
21355
21356 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21357
21358         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21359         separate structure to reduce the size of MonoJumpInfo.
21360
21361 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21362
21363         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21364
21365 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21366
21367         * mini.c (mini_get_inst_for_method): Changed to allow ports
21368         to return a MonoInst instead of opcode 
21369         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21370         
21371         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21372         Allow ports to return a created MonoInst instead of op-code, will enable
21373         new optimizations.
21374         (renamed mini_get_opcode_for_method to better reflected the functionality)
21375
21376 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21377
21378         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21379
21380 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21381
21382         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21383         Fixes #69985.
21384
21385 2004-12-08  Martin Baulig  <martin@ximian.com>
21386
21387         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21388         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21389
21390 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21391
21392         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21393         correctly.
21394
21395         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21396         arithmetic.
21397
21398 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21399
21400         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21401
21402 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21403
21404         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21405         bug introduced by the previous patch.
21406
21407 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21408
21409         * mini-ppc.c, objectc.cs: handle large structs passed by value
21410         (fixes bug #69972).
21411
21412 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21413
21414         * mini-ppc.c: OP_ARGLIST implementation from
21415         Geoff Norton  <gnorton@customerdna.com>.
21416
21417 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21418
21419         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21420         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21421
21422 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21423
21424         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21425
21426 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21427
21428         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21429         support.
21430
21431 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21432
21433         * mini-sparc.c: Zero out localled-ed memory.
21434
21435         * iltests.il: Add tests for zeroing out localloc-ed memory.
21436
21437 2004-12-04  Martin Baulig  <martin@ximian.com>
21438
21439         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21440         mono_method_get_signature_full().       
21441
21442 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21443
21444         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21445         and some utility functions (always for SSAPRE), integrated SSAPRE.
21446         * mini.h: Likewise.
21447         * driver.c: Added ssapre option.
21448         * ssa.c: Small fix on OP_ARG handling.
21449         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21450         * Makefile.am: Likewise.
21451
21452 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21455         now in the xp code.
21456
21457         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21458         icall.
21459
21460 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21461
21462         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21463         
21464         * cpu-s390.md : Increase instruction length of oparglist.
21465
21466         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21467
21468 2004-11-30  Martin Baulig  <martin@ximian.com>
21469
21470         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21471         virtual generic methods.  We call a special helper_compile_generic_method()
21472         icall to retrieve the method from the vtable, inflate and compile
21473         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21474
21475         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21476
21477 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21478
21479         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21480
21481 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21482
21483         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21484         Fixes #69929.
21485
21486 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21487
21488         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21489         platforms with PIC aot.
21490
21491 2004-11-28  Martin Baulig  <martin@ximian.com>
21492
21493         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21494         Fixes gen-112.cs.
21495
21496 2004-11-28  Martin Baulig  <martin@ximian.com>
21497
21498         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21499         the result of mono_type_get_underlying_type() to check whether
21500         we're byref.
21501
21502 2004-11-26  Martin Baulig  <martin@ximian.com>
21503
21504         * mini.c
21505         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21506         in the g_assert().
21507
21508 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21511         the same way as the other arguments so they won't get clobbered.
21512
21513         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21514         calls through R11 since it is clobbered by the trampoline code.
21515
21516 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21517
21518         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21519         pick up in-tree mscorlib.dll.
21520
21521 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21522
21523         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21524
21525         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21526         runtime data/code are now stored in a table similar to the GOT in ELF. 
21527         This allows the code itself to be position independent.
21528
21529         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21530         loading changes.
21531
21532         * aot.c: Attach ELF type (object/function) directives to all global
21533         symbols.
21534
21535         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21536
21537         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21538
21539         * mini-amd64.h: Turn on PIC AOT code.
21540
21541         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21542         returning the offset within an OP_AOTCONST instruction where the GOT
21543         offset needs to be added.
21544
21545         * mini.h: Bump AOT file format version.
21546
21547 2004-11-25  Martin Baulig  <martin@ximian.com>
21548
21549         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21550         uninflated generic methods.
21551
21552 2004-11-25  Martin Baulig  <martin@ximian.com>
21553
21554         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21555
21556 2004-11-24  Martin Baulig  <martin@ximian.com>
21557
21558         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21559         original klass (this only applies for generic instances).
21560
21561 2004-11-24  Martin Baulig  <martin@ximian.com>
21562
21563         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21564         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21565         that array).
21566
21567 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21568
21569         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21570         localloc. Fixes #69678.
21571
21572         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21573         
21574 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21575
21576         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21577         used SSE registers on pinvoke calls. Fixes #69774.
21578
21579 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21580
21581         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21582         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21583
21584 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21585
21586         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21587         Refer directly to the mcs/ tree.
21588
21589 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21590
21591         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21592         Check if a trampoline for a synchronized method is required. 
21593
21594 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21595
21596         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21597         with localloc if needed. Throe arithmetric exception in
21598         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21599         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21600
21601 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21602
21603         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21604         types before switching on type.  Fixes #69622.
21605
21606 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21607
21608         * Makefile.am (check-local): New.  Integrate into 'make check'.
21609         (MCS,RUNTIME): Define using in-tree mono and mcs.
21610         (ILASM): New.
21611         (%.exe): Use $(ILASM).
21612
21613 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21614
21615         * mini-ppc.c: adjust initial prolog size (bug #69691).
21616
21617 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21620         #69664.
21621
21622 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21623
21624         * Makefile.am (clean-local): Rename from 'clean'.
21625
21626 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21627
21628         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21629         to mono_arch_is_int_overflow. 
21630         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21631         SIGFPE events.
21632
21633 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21634
21635         * declsec.c|h: New files to support declarative security attributes.
21636         Added function to check if a method has (applicable) security.
21637         * mini.c|h: Add check for declarative security attributes in
21638         mono_method_check_inlining.
21639         * Makefile.am: Added declsec.c and declsec.h to the build.
21640
21641 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21642
21643         * mini.c, mini.h: update to keep dynamic code info per-domain.
21644
21645 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21646
21647         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21648         (mini_init): Get rid of it from here too.
21649
21650 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21651
21652         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21653         implemented OP_RETHROW (patch by Geoff Norton
21654         <gnorton@customerdna.com>).
21655
21656 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21657
21658         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21659         between appdomains.  Fixes appdomain-unload on PPC.
21660
21661 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21662
21663         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21664         mini-exceptions.c: handle the new wrapper types.
21665         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21666         token value as a MonoClass* when compiling a wrapper.
21667         mono_jit_create_remoting_trampoline now takes an additional
21668         MonoRemotingTarget parameter.
21669         
21670 2004-11-10  Martin Baulig  <martin@localhost>
21671
21672         * mini.c (mono_method_to_ir): Use `generic_container->context'
21673         rather than creating a new one.
21674
21675 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21676
21677         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21678
21679         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21680
21681 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21682
21683         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21684         the experimental aot cache stuff.
21685
21686 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21687
21688         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21689         mini-exceptions.c: update to exception clause structure changes.
21690
21691 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21692
21693         * exceptions-x86.c (throw_exception): Fix warnings.
21694
21695         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21696         for OP_RETHROW.
21697
21698 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21699
21700         * exceptions-sparc.c (get_throw_exception): Really fix this.
21701
21702 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21703
21704         * tramp-*.c: we no longer support icalls without wrappers, so
21705         a bit of code can be removed here
21706
21707 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21708
21709         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21710         patch.
21711
21712         * cpu-sparc.md: Add op_rethrow.
21713
21714         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21715
21716         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21717
21718         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21719         * mini-ops.h: Add OP_RETHROW.
21720
21721         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21722
21723         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21724
21725 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21726         
21727         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21728         Makes the output much easier to read
21729
21730 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21731
21732         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21733         prevents another huge leak when compiling with ssa. Secondly, the
21734         performance of doing this rather than freeing the lists is much
21735         better. GList does a lock every time you allocate a list link,
21736         so that it can use a memory pool. So, it is better to just use
21737         a memory pool of our own.
21738         
21739         * ssa.c, linear-scan.c: replace g_list_remove_link with
21740         g_list_delete.  The remove one does not free the GList, so we were
21741         leaking memory. On -O=all --compile-all with corlib, this cut down
21742         3 MB of allocations.
21743
21744 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21747
21748         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21749
21750         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21751         into a new function mono_create_jit_trampoline ().
21752
21753 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * trace.c (get_spec): Allow tracing of classes without a namespace.
21756
21757 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21758
21759         * mini.c: Fix pointer overwrite in mini_method_compile.
21760
21761 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21762
21763         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21764         The darwin ABI needs some special handling for 1 and 2 byte structs
21765         Lets use lbz/lhz instead of lwz everywhere.
21766         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21767         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21768         Use stb/sth for the former, and put the latter always on stack instead of in
21769         argument registers.
21770
21771 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * trace.c (is_filenamechar): Add '_'.
21774
21775 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21776
21777         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21778
21779         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21780
21781 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21782
21783         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21784         depends on libmonogc. Fixes #68805.
21785
21786 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21787
21788         * mini.c (mono_jit_free_method): Provide extra information for
21789         this error.  Currently this leaks, but will be turned into a
21790         developer option in the future.
21791
21792 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21795
21796 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21799         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21800         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21801
21802 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21805         trampolines for AOT code.
21806
21807 2004-10-22    <vargaz@freemail.hu>
21808
21809         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21810         constructed types. Fixes #68136.
21811
21812 2004-10-21  Martin Baulig  <martin@ximian.com>
21813
21814         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21815         if it returns true, unwind the stack to the call instruction.
21816
21817 2004-10-21    <vargaz@freemail.hu>
21818
21819         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21820
21821         * mini.h: Bump AOT version number.
21822
21823         * objects.cs: Add another test for unbox trampolines.
21824
21825         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21826         valuetype methods.
21827
21828 2004-10-20    <vargaz@freemail.hu>
21829
21830         * driver.c: Add SHARED to the set of optimizations tested.
21831
21832         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21833
21834         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21835         used by CEE_NEWARR.
21836
21837         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21838
21839 2004-10-20  Martin Baulig  <martin@ximian.com>
21840
21841         * mini-exceptions.c (mono_handle_exception): Call
21842         mono_debugger_handle_exception() to tell the debugger about
21843         catch/finally clauses.
21844
21845 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21846
21847         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21848
21849         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21850         #68447.
21851
21852 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21853
21854         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21855         methods as their native size, fixed bug #57543, #57545.
21856         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21857         This saves a temporary register and mullw call down into 1 (minor perf
21858         increase for cases like sum = sum * 5;  This use to translate into:
21859             li r11,5
21860             mullw r28,r28,r11
21861         It now translates to
21862             mulli r28,r28,5
21863
21864 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21865
21866         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21867         #68388.
21868
21869 2004-10-11  Martin Baulig  <martin@ximian.com>
21870
21871         * mini.c (mono_method_to_ir): If we're a generic method, get the
21872         MonoGenericContainer from our MonoMethodNormal and create a
21873         MonoGenericContext from it.
21874
21875 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21876
21877         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21878
21879         * basic-long.cs: Add test for checked i8->i2 cast.
21880
21881 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21882
21883         * inssel-ppc.brg: added a couple of speedup rules.
21884
21885 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21886
21887         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21888         to speed up rebuilds.
21889
21890 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21891
21892         * mini-s390.c: Minor fix to OP_OR_IMM.
21893
21894 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21897         better. Fixes appdomain-unload.exe on sparc.
21898
21899 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21900
21901         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21902         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21903         see bug 67324.
21904
21905 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21908
21909 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21910
21911         * mini.c: Always generate a field read/write wrapper for members
21912         of the class MarshalByRefObject since the actual instance could
21913         be a CBO.
21914
21915 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21916
21917         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21918
21919 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * driver.c mini.h trace.c: Move the setting of the main assembly into
21922         a separate function called mono_trace_set_assembly () and call it after
21923         actually loading the main assembly. Fixes #66872.
21924
21925 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21926
21927         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21928         using the code manager.
21929
21930 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21931
21932         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21933
21934 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21935
21936         * cpu-amd64.md: Fix bug in previous patch.
21937         
21938         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21939         #66650.
21940
21941 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21942
21943         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21944         mini-exceptions.c: updates for changed stack walk interface.
21945
21946 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21947
21948         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21949
21950 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21953
21954 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21955
21956         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21957         since assemblies can't be unloaded.
21958         
21959 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21960
21961         * cpu-amd64.md: Fix more instruction lengths.
21962
21963         * cpu-amd64.md: Fix lengths of some instructions.
21964
21965 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21966
21967         * inssel.brg: Make the array ldelema check aot friendly.
21968
21969 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21972
21973         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21974
21975 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * mini-x86.c: Fix build.
21978
21979         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21980         mono_type_get_underlying_type () helper function to simplify code.
21981         
21982 2004-09-09  Martin Baulig  <martin@ximian.com>
21983
21984         * mini-amd64.c: Don't access `type->data.klass' directly, call
21985         mono_class_from_mono_type() instead since the type may be a
21986         generic instance.
21987
21988 2004-09-09  Martin Baulig  <martin@ximian.com>
21989
21990         * mini-amd64.c (get_call_info): Fix support for generic instances.
21991         (add_valuetype): Use mono_class_from_mono_type() to get the class
21992         since we can be a generic instance.
21993
21994 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21995
21996         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21997
21998 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21999
22000         * liveness.c: reset spill costs on each scan: bug 62107
22001
22002 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
22003
22004         * exceptions-sparc.c (mono_arch_find_jit_info): remove
22005         unnecessary line that doesn't compile
22006
22007 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22008
22009         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
22010         trampolines, make them call an error function so people can fix their
22011         code.
22012
22013 2004-09-06  Martin Baulig  <martin@ximian.com>
22014
22015         * mini.c (mono_method_to_ir): When initializing locals, handle a
22016         generic instances like a valuetype if it's a valuetype and like a
22017         class if it's a class.
22018
22019 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
22022         stack. Fixes #64674.
22023
22024         * exceptions.cs: Add test for unwinding of call arguments.
22025
22026 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
22027
22028         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22029         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22030         set the carry/borrow flag). The sparc and s390 implementations
22031         can now use optimized versions (and simplify the code). ppc bugfixes.
22032
22033 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22034
22035         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22036
22037 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22038
22039         * inssel-amd64.brg: Remove leftover 32 bit rule.
22040
22041         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22042
22043 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22044
22045         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22046         mono_arch_find_jit_info functions into a new function. Fix a memory
22047         leak.
22048
22049         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22050         refactored code.
22051         
22052 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22053
22054         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22055         as well.
22056         
22057         * exceptions.cs: Add array size tests.
22058
22059         * mini.c: Allocate a separate icall wrapper for each arity of 
22060         mono_array_new_va. Fixes #59509.
22061
22062         * exceptions.cs: Add testcase for 64578.
22063
22064         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22065
22066         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22067         
22068 2004-09-02  Martin Baulig  <martin@ximian.com>
22069
22070         * mini.c (mono_method_to_ir): When initializing the locals, call
22071         handle_initobj() on the generic instance itself, not its
22072         underlying type.
22073
22074 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22075
22076         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22077         MonoJitInfo for dynamic methods.
22078
22079         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22080
22081         * mini.c: Add support for freeing JIT data for dynamic methods.
22082         
22083 2004-09-01  Martin Baulig  <martin@ximian.com>
22084
22085         * mini-x86.c (is_regsize_var): Added support for generic
22086         instances.
22087         (mono_arch_emit_prolog): Make this compile again, use
22088         `x86_push_imm_template (code)'.
22089
22090 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22091
22092         * mini-x86.c: make all push_imm instructions that get
22093         patched always emit the long form
22094
22095 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22096
22097         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22098         in a per-domain hash.
22099
22100         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22101         types.
22102
22103 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22104
22105         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22106         work.
22107         
22108         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22109         work.
22110
22111         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22112         Beginnings of SSE2 support.
22113
22114         * exceptions.cs: Add more tests for checked int<->uint casts.
22115
22116 2004-08-28  Martin Baulig  <martin@ximian.com>
22117
22118         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22119         generic instances.
22120
22121         * mini.c
22122         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22123         Handle generic instances recursively.
22124
22125 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22126
22127         * iltests.il: test for conv.u8 on a constant
22128
22129 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22130
22131         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22132         LCONV_x4 (shrun_32 (membase)).
22133
22134 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22135
22136         * inssel-x86.brg: c&p rules for push/setret of long
22137
22138 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22139
22140         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22141         compare (regvar, base)
22142
22143         * inssel-x86.brg: more burg love
22144
22145         * inssel.brg: more cleanup
22146
22147         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22148
22149 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22150
22151         * basic-long.cs, basic-calls.cs: new tests for optimization.
22152
22153 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22156         patch.
22157
22158 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22161         
22162 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22163
22164         * inssel.brg (mini_emit_memcpy): use 
22165         NO_UNALIGNED_ACCESS to disable memcpy optimization
22166
22167 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * mini-amd64.c: Handle generic types in various places.
22170
22171         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22172
22173 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * mini.c (handle_box): Fix warning.
22176
22177         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22178
22179         * mini-amd64.h: Enable the emit_state optimization.
22180
22181         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22182
22183         * mini-amd64.c: Add some new 64 bit peephole opts.
22184
22185         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22186
22187         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22188
22189         * mini-amd64.c: Register allocator fixes.
22190
22191         * mini.c: Add an optimization to emit_state to avoid allocation of new
22192         registers on some platforms.
22193
22194 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22195
22196         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22197
22198         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22199         allocation. Fixes #63085.
22200
22201         * basic-long.cs: Add new regression test.
22202
22203         * mini-amd64.c: Register allocator improvements.
22204
22205 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22206
22207         * mini-amd64.c (read_tls_offset_from_method): Add another code
22208         sequence.
22209
22210         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22211         instruction sequence for nullifying class init trampolines.
22212
22213         * objects.cs: Add new regalloc test.
22214
22215         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22216
22217 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22218
22219         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22220         
22221         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22222         arguments.
22223
22224         * driver.c: Fix profiling after TLS changes.
22225         
22226         * driver.c (mono_main): Set mono_stats.enabled if needed.
22227
22228         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22229         CEE_BOX.
22230
22231 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22232
22233         * mini-x86.c: use a 1 op rather than a 2 op tls access
22234         instruction -> faster.
22235
22236 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22237
22238         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22239         x86 backend.
22240
22241 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22242
22243         * exceptions-sparc.c (throw_exception): fix typo
22244
22245 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22246
22247         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22248         set tree->dreg correctly with tls. Allow any
22249         register to be used.
22250
22251         * mini-x86.c (read_tls_offset_from_method): add new code
22252         generation pattern seen with GCC.
22253
22254
22255 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22256
22257         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22258         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22259         exceptions-sparc.c: fix some performance issues in exception
22260         handling and setting of the stack trace for exceptions that were
22261         already thrown.
22262
22263 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22266         x86 backend.
22267         
22268         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22269         registers.
22270
22271 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22272
22273         This patch inlines tls access, when possible.
22274         
22275         * mini.h: new arch functions for TLS intrinsics.
22276         All platforms updated with a stub.
22277
22278         * mini.c: use the new intrinsics
22279
22280         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22281         arch specific intrinsic for tls variables
22282
22283 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22284
22285         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22286         under windows.
22287
22288 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22289
22290         * mini.c: thread local allocation
22291
22292 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22293
22294         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22295
22296         * Makefile.am: Link against the static version of libmonogc.
22297         
22298         * Makefile.am: Link the static versions of the convenience libraries
22299         into the mono executable.
22300
22301         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22302
22303 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22304
22305         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22306         on integer overflow.
22307
22308         * mini-amd64.c: Reorganize function call code.
22309
22310         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22311
22312 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22313
22314         * inssel-x86.brg: use xor eax,eax.
22315         
22316         * basic.cs: new tests
22317
22318 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22319
22320         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22321         in exception throwing code.
22322         
22323 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22324
22325         * inssel-x86.brg: use xor esi,esi.
22326
22327 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22328
22329         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22330         can trace methods compiled during mini_init () too.
22331
22332         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22333         CEE_CONV_U4.
22334
22335 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22336
22337         * Makefile.am: static link on x86 (r=zoltan)
22338
22339 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22340
22341         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22342         code since it causes some programs to fail.
22343
22344 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22345
22346         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22347
22348 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22349
22350         * mini.c: ovfops_op_map - add STACK_OBJ case for
22351         CONV_I 
22352         * basic.cs: add test_0_pin_string as test
22353         case for above.
22354
22355 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22356
22357         * Makefile.am: build C# if srcdir != builddir
22358
22359 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22360
22361         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22362         fall-through blocks.
22363
22364 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22365
22366         * driver.c: enable loop by default again and include abcrem in -O=all.
22367
22368 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22369
22370         * iltests.il: Add some localloc tests.
22371
22372         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22373
22374         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22375         Fixes #62574.
22376
22377         * inssel-amd64.brg: Add some optimizations.
22378
22379         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22380         for gcc-3.4.
22381
22382         * Makefile.am: Statically link mono against libmono on AMD64.
22383         
22384         * mini-amd64.c inssel-amd64.brg: Optimizations.
22385
22386 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22387
22388         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22389
22390         * tramp-amd64.c: Patch calling code in trampolines.
22391
22392 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * mini-amd64.c: pinvoke struct passing fixes.
22395
22396 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22397
22398         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22399         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22400
22401 2004-08-05  Duncan Mak  <duncan@ximian.com>
22402
22403         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22404         CEE_LDELEM_ANY.
22405
22406 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22407
22408         * mini-amd64.c (emit_move_return_value): Move return value for normal
22409         calls too.
22410
22411 2004-08-05  Martin Baulig  <martin@ximian.com>
22412
22413         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22414         `type->type'; just modify `type' itself when dealing with enums
22415         and generic instances.
22416         (check_call_signature): Make `simple_type' a `MonoType *'.
22417
22418 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22419
22420         * mini.c: Use OP_PADD to add offsets to addresses.
22421
22422         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22423
22424 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22425
22426         * mini-sparc.c (mono_arch_emit_epilog): fix check
22427         for folding last op into restore instruction
22428
22429 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22430
22431         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22432         helper methods using the code manager.
22433         
22434         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22435
22436         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22437
22438 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22439         
22440         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22441           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22442
22443         * mini-s390.c: fix tail processing
22444
22445 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22446
22447         * mini-ppc.c: mul.ovf.un exception name fix.
22448
22449 2004-08-03  Martin Baulig  <martin@ximian.com>
22450
22451         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22452         instances; before jumping to `handle_enum', also modify `ptype'.
22453
22454 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22455
22456         * cpu-sparc.md: fcall maximal length too small.
22457
22458 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * mini-amd64.c mini.h: Add initial support for passing/returning 
22461         structures to/from pinvoked methods.
22462
22463 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22464
22465         * mini-ppc.c: reg allocator fix.
22466
22467 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22468
22469         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22470
22471         * inssel.brg: Optimize memset on 64 bit machines.
22472
22473         * mini-amd64.c: Fix some vararg cases.
22474
22475 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22476
22477         * mini-s390.c: Corrected macro in emit_float_to_int
22478
22479         * s390-abi.cs: Tests to exercise the s390 ABI
22480
22481 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22482
22483         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22484         caller saved regs.
22485
22486         * basic.cs: Add a test for add.ovf.un.
22487
22488 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22489
22490         * mini-sparc.c: add case for OP_IDIV_UN
22491
22492 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22493
22494         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22495         
22496         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22497
22498 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22499
22500         * basic.cs: regression tests.
22501
22502         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22503         regressions.
22504
22505 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22506
22507         * basic.cs: Add a new test.
22508
22509         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22510         and AOT. Various fixes and optimizations.
22511
22512         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22513
22514 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22515
22516         * mini-ppc.c: make sure temp regs are not used for global reg
22517         allocation.
22518
22519 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22520
22521         * cpu-sparc.md: conv_i8 fix for 64bits
22522
22523         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22524
22525 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22526         
22527         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22528         add opcode for cmp BYTE PTR [eax], imm.
22529
22530         * inssel.brg: Make memcpy and memset takes bases.
22531
22532 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22533
22534         * *-amd64.*: More AMD64 work.
22535         
22536 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22537
22538         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22539         add a compare-not-equal opcode.
22540         
22541 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22542
22543         * mini.c: Use mono_init_from_assembly instead of mono_init.
22544         
22545 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22546
22547         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22548
22549         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22550
22551         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22552
22553         * inssel.brg: 64 bit fixes.
22554
22555         * mini.h (MonoCallInst): Add some AMD64 specific data.
22556
22557         * mini.h: Add some OP_P opcodes.
22558
22559 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22560
22561         * basic.cs: tests for 61797 and 61740
22562
22563 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22564
22565         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22566         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22567
22568 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22569
22570         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22571
22572         * *-amd64*.*: Ongoing AMD64 work.
22573
22574 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22575
22576         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22577
22578         * *-amd64*: Ongoing AMD64 work.
22579
22580         * mini-arch.h: Add AMD64 support.
22581
22582         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22583
22584         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22585
22586         * mini-ops.h: Add new opcodes.
22587
22588         * Makefile.am: Add AMD64 support.
22589
22590         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22591         rules into the inssel-long*.brg files.
22592
22593         * *-amd64.*: Add beginnings of AMD64 backend.
22594
22595 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22596
22597         * mini.c (print_dfn): commenting out the code that prints
22598         the cil. With -O=deadce, this makes -v -v crash.
22599         
22600         * cpu-pentium.md: make checkthis have a length of 2
22601
22602 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22603
22604         * mini-sparc.h: fix implementations of __builtin
22605         functions for Sun compiler for V9.
22606
22607 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22608
22609         * mini.c: use the new stelem.ref wrapper
22610         * exceptions.cs, arrays.cs: new stelem.ref tests
22611
22612 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22613
22614         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22615         new XSP should work with these changes).
22616
22617 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22618         
22619         * inssel-{long32,x86,}.brg: trivial optimizations.
22620         
22621 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22622
22623         * mini.c: load value when emitting box operation in
22624         constrained calls.
22625
22626 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22627
22628         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22629         is one byte shorter than cmp DWORD PTR [eax], 0.
22630
22631 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22632
22633         * inssel-ppc.brg: arguments on the stack are always
22634         relative to the stack pointer (spotted by Neale Ferguson).
22635
22636 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22637
22638         * exceptions-x86.c: delay appending the method name to the trace until
22639         after mono_jit_info_table_find is called, as this gets the real
22640         MonoMethod.
22641
22642 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22643
22644         * aot.c: register roots
22645
22646 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22647
22648         * aot.c : I could just use PLATFORM_WIN32 flag.
22649
22650 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22651
22652         * aot.c : Reverting the previous fix. This time it broke linux build.
22653
22654 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22655
22656         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22657
22658 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22659
22660         * mini.c (handle_stack_args): Remove some more debugging code.
22661         
22662         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22663
22664         * driver.c mini.h aot.c: Allow additional options to be specified with
22665         --aot and pass them to mono_compile_assembly.
22666
22667         * aot.c: Add experimental code to AOT compile all loaded assemblies
22668         on demand and save the code into a cache in the filesystem.
22669
22670         * aot.c: Add support for more wrapper methods.
22671         
22672         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22673         58863.
22674
22675         * cpu-*.md: Remove removed opcodes.
22676
22677         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22678         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22679         related icalls to marshal.c.
22680
22681 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22682
22683         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22684
22685         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22686
22687         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22688
22689 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22690         * liveness.c: If liveness is recomputated we need to reset the information
22691         for each variable. This way, if the liveness range has been narrowed
22692         by optimizations that happened after the last computation, we can return
22693         a smaller range.
22694         
22695         For example, if you have
22696         
22697         {
22698                 int i = 0;
22699                 
22700                 // Tons of code that does not affect i
22701                 
22702                 i = foo ();
22703                 ...
22704         }
22705         
22706         i = 0 is dead code and will be removed by SSA. However, when
22707         linear scan gets to the code, i will still appear to be live
22708         throughout the entire block. This prevents good register allocation.
22709
22710 2004-07-06  Martin Baulig  <martin@ximian.com>
22711
22712         * debug-mini.c (mono_debug_init_method): Allow
22713         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22714         (mono_debug_add_icall_wrapper): New method.
22715
22716         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22717
22718 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22719
22720         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22721         optimization.
22722
22723 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22724
22725         * aot.c (mono_aot_load_method): Fix loading of debug info.
22726
22727 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * aot.c: Add logging support.
22730
22731 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22732
22733         * mini.h: Add prototype for mono_print_method_from_ip.
22734
22735         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22736
22737         * inssel.brg: 64 bit fixes.
22738
22739         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22740         inssel-long32.brg.
22741
22742         * Makefile.am: Add SPARC64 support.
22743
22744 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * aot.c: Fix alignment problems on 32 bit platforms.
22747
22748 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22749
22750         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22751         SPARC64.
22752
22753         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22754         problems.
22755
22756         * mini.h: Bump AOT file version. Some 64 bit fixes.
22757
22758 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22759
22760         * inssel-sparc.brg: Add new rule to avoid register moves.
22761
22762         * inssel.brg: Add ldind_to_load_membase helper function.
22763
22764 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22765
22766         * mini.c: OffsetToStringData intrinsic.
22767         
22768 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22771
22772         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22773         regression tests.
22774
22775         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22776 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22777
22778         * mini.c: reinstated mono_compile_get_interface_var()
22779         on x86, too, since the change breaks the Gtk# build there as well.
22780
22781 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22782
22783         * driver.c: remove loop from the default optimizations: it seems to
22784         interact badly with some of the other options (see bug #60613).
22785
22786 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22787
22788         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22789         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22790
22791 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22792
22793         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22794         vararg-using methods.
22795
22796 2004-06-21  Martin Baulig  <martin@ximian.com>
22797
22798         * mini/mini-exceptions.c
22799         (mono_handle_exception): Added `gpointer original_ip' argument.
22800         After calling mono_unhandled_exception(), call
22801         mono_debugger_unhandled_exception() and if that returns true,
22802         restore the context and return.
22803
22804 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22805
22806         * mini-ppc.c: prefer the use of relative branches so
22807         they won't need to be patched in aot code (patch from Patrick Beard).
22808
22809 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22810
22811         * aot.c: patch from Patrick Beard to make the output assembly
22812         more correct for the MacOSX assembler. Small tweak to
22813         generate sane images on Linux/PPC, too.
22814
22815 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22816
22817         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22818         case until bug #59509 is fixed (shows up in #60332).
22819
22820 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22821
22822         * mini.c: make sure the needed wrappers are compiled, too, with
22823         precomp.
22824
22825 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22826
22827         * driver.c: remove NPTL reference in --version output.
22828
22829 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22830
22831         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22832         generate valid assembly for the Mach-O assembler.
22833
22834 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22835
22836         * driver.c: don't include abcrem in the all optimization specifier
22837         since it slows down jit compilation too much for now.
22838
22839 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22840
22841         * mini.c: use BIGMUL only if both operands have the same signage.
22842         * iltests.il: Test for bug 60056. (errors related to signage in
22843         BIGMUL).
22844
22845         r=lupus.
22846
22847 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22848
22849         * mini.c, aot.c: memory leak fixes.
22850
22851 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22852
22853         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22854
22855 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22856
22857         * Makefile.am: remove the -static hack completely, it links in
22858         statically glib as well.
22859
22860 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22861
22862         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22863         * exceptions.cs: make it compile with new mcs/csc.
22864
22865 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22866         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22867         and added relevant test case.
22868
22869 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22870
22871         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22872         regressions in gtk-sharp.
22873
22874 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22875
22876         * exceptions.cs: New regression tests.
22877
22878         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22879
22880 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22881
22882         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22883
22884 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22885
22886         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22887
22888         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22889
22890 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22891
22892         * mini.c (mono_jit_runtime_invoke): Init class in this
22893         method instead of trusting mono_jit_compile_method to
22894         do the work (because wrappers can be in object class)
22895
22896 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22897
22898         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22899
22900         * basic-long.cs: New regression test.
22901
22902 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22903
22904         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22905         and div/rem checks.
22906
22907 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22908
22909         * Makefile.am: fix miguel's change to build mono statically against
22910         libmono (track build dependencies).
22911
22912 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22913
22914         * cfold.c: Some glib versions do not have G_MININT32.
22915
22916 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22917
22918         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22919         with precision of tan, atan, sin and cos, and implemented related
22920         regressions tests (fixes bug 54467, but one new problem appeared and
22921         is not fixed yet).
22922
22923 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22924
22925         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22926
22927         * exceptions.cs: Add test for constant folding && division by zero.
22928
22929         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22930         since driver.c is in libmono too, so the optimization was useless.
22931
22932         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22933         variable to driver.c so the compiler can emit more efficient code to
22934         access them.
22935
22936 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22937
22938         * Makefile.am: don't distribute generated inssel.[ch] files.
22939
22940 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22941
22942         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22943         into the default appdomain. Fixes #58707.
22944
22945         * jit-icalls.c: Remove the broken approximation for truncl, doing
22946         no conversion is better.
22947
22948         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22949         Fixes #58863.
22950
22951 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22952
22953         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22954         of the mcrxr instruction which is not available on some processors
22955         even if it's documented to be. Implement add and sub overflow correctly
22956         (still not complete for long unsigned). Speed up icalls a bit.
22957
22958 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22959
22960         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22961         we run .cctor in the current domain instead of target_domain.
22962         
22963         Fixes bug #58558, .cctor not being called in -O=shared.
22964
22965 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22966
22967         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22968
22969 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22970
22971         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22972         which can be done with an imm8, do it that way.
22973         (mono_arch_output_basic_block): ditto for a jmp
22974         (mono_arch_emit_prolog): Computate maximum offset of a label.
22975
22976 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22977
22978         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22979         now tries to allocate prefered physical reg's for virtual
22980         regs. This reduces the number of emited spills/loads with
22981         20-30% on our core assemblies.
22982
22983 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22984
22985         * jit-icalls.c: truncl() is not needed and trunc() is
22986         the correct thing to do anyway (bug #58287).
22987
22988 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22989
22990         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22991         if available.
22992
22993 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22994
22995         * driver.c: enable loop optimizations by default.
22996
22997 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22998
22999         * mini-x86.c: fix calc of max loop size when aligning loops start.
23000
23001 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
23002
23003         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
23004         the stack.
23005
23006 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
23007
23008         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
23009         should set carry.
23010
23011         * basic-long.cs: Add tests for add/subtract of immediates with carry.
23012
23013         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
23014         
23015         * mini.c (inline_method): Allways inline some wrappers even if the cost
23016         is too large. Fixes #58785.
23017
23018         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
23019         
23020 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
23021
23022         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
23023         (crichton@gimp.org). Beginning of support for sparc/linux.
23024
23025         * mini-sparc.c: Optimize retrieval of LMF address.
23026
23027 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * exceptions-ppc.c:  handle alloca in methods with clauses.
23030
23031 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23034
23035 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23036
23037         * mini.c: Delegate most of the abort signal work to 
23038           mono_thread_request_interruption, which also handles Stop and Suspend
23039           states.
23040
23041 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23042
23043         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23044         supports the save/restore lmf opcodes.
23045
23046 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23047
23048         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23049         by gcc-3.4 as well.
23050
23051         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23052
23053 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23054
23055         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23056         methods which contain array accesses.
23057
23058         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23059         boundaries. Fixes #58537.
23060
23061         * iltests.il: Add regression test for #58537.
23062
23063 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23064
23065         * mini-x86.c (mono_arch_local_regalloc): Last part of
23066         fix for bug #58633 (releasing register to early).
23067
23068 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23069
23070         * basic-long.cs: Add new regression test.
23071
23072 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23073
23074         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23075         register too early on the chain.
23076
23077 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23078
23079         * mini.c (create_helper_signature): Use a helper function to reduce
23080         the code which needs to be written. Also set the calling convention of
23081         icalls on windows. Fixes #57840.
23082
23083 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23084
23085         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23086         exceptions-ppc.c: added helper function to get the instruction address
23087         from a signal handler context.
23088
23089 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23090
23091         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23092         from gonzalo.
23093
23094 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23095
23096         * helpers.c: Add new env variable to pass args to objdump.
23097         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23098
23099 2004-05-17  Radek Doulik  <rodo@ximian.com>
23100
23101         * Makefile.am (common_sources): added abcremoval.h so it get
23102         disted and daily mono packages on go-mono.com will build again
23103
23104 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23105
23106         * abcremoval.c: Fixed coding style, added copyright header.
23107
23108         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23109
23110         * mini.h: Added prototype for abc removal main function.
23111
23112         * build_relations_propagation_table.pl: Added copyright header.
23113
23114 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23115
23116         * basic-long.cs: reg test for complex ceq_long bug.
23117
23118 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23119
23120         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23121         reg in long and clob case (bug #58343). Fixed/added comments.
23122
23123 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23124
23125         * mini.c (mono_jit_runtime_invoke): Follow new convention
23126         of calling the invoke method with an function pointer.
23127
23128 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * ChangeLog: Fix author of memory leak patch.
23131
23132 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23133
23134         * Makefile.am: fix make dist as well...
23135
23136
23137 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23138
23139         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23140         on archs where pointers are 4 bytes long.
23141
23142         * Makefile.am: Added abcremoval.c source file.
23143
23144         * abcremoval.c: Added abcremoval.c.
23145
23146         * abcremoval.h: Added abcremoval.h.
23147
23148         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23149
23150         * inssel.brg: Enabled bounds check removal.
23151
23152         * mini.c: Added support for abcrem optimization.
23153
23154         * mini.h: Added abcrem optimization label.
23155
23156         * driver.c: Added support for abcrem optimization.
23157
23158         * propagated_relations_table.def: Added propagated_relations_table.def.
23159
23160 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23161
23162         * mini.c, cfold.c: fix style.
23163
23164 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23165
23166         * mini.c: handle issue with the low-level implementation of
23167         some long opcodes (bug #54209).
23168
23169 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23170
23171         * basic.cs: test for my new cmov stuff.
23172
23173 2004-05-13      Patrik Torstensson
23174
23175         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23176         opt and added peephole documentation.
23177
23178 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23179
23180         * tramp-ppc.c: rewrote the generic trampoline code.
23181
23182 2004-05-11      Patrik Torstensson
23183
23184         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23185
23186 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23187
23188         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23189
23190         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23191         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23192
23193         * mini.c: Add new icalls for AsAny marshalling.
23194
23195 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23196
23197         * tramp-ppc.c, mini-ppc.c: more cleanups.
23198
23199 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23200
23201         * mini.c: no warnings.
23202
23203 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23204
23205         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23206
23207 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23208
23209         * mini.c: In the thread abort signal handler, if the thread is in the
23210         process of being stoped, don't throw the Abort exception, just stop the
23211         thread.
23212
23213 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23214
23215         * tramp-ppc.c: removed old code.
23216
23217 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23218
23219         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23220         do some simple speed optimizations on ppc.
23221
23222 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23223
23224         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23225         and large offsets in load/store.
23226
23227 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23228
23229         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23230         it causes regressions.
23231
23232 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23235         support.
23236
23237 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23238
23239         * jit-icalls.c: remove warnings.
23240         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23241         speedups for unsafe code.
23242
23243 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23244
23245         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23246
23247 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23248
23249         * basic-calls.cs: Add new regression test.
23250
23251         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23252         more portable.
23253
23254         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23255
23256         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23257         is no longer used.
23258
23259 2004-05-06      Patrik Torstensson
23260
23261         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23262         long reg allocation in any reg (not only eax:edx) and implemented 
23263         long shl/shr ops in asm instead of helpers.
23264
23265 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * mini-sparc.h: Fix warnings.
23268
23269         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23270         stack.
23271
23272         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23273         separate statement for clarity.
23274
23275         * mini-sparc.c: Update status.
23276
23277 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23278
23279         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23280         here.
23281
23282 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23283
23284         * inssel-ppc.brg: another small pre-release workaround:
23285         we don't do overflow detection for long_sub_un.
23286
23287 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23288
23289         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23290         (also works around a weird ppc bug: 57957).
23291
23292 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23293
23294         * tramp-ppc.c: trampoline fixes.
23295
23296 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23297
23298         * mini-ppc.c: fixed typos.
23299
23300 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23301
23302         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23303         at the top of the stack. Fixed typos. Use a frame registers
23304         for all the methods with exception clauses.
23305
23306 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23307
23308         * exceptions-ppc.c: restore fp registers.
23309
23310 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23311
23312         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23313         order from the stack top (moved the stack room to save the
23314         return value for trace after the param area). Fixed corruption
23315         in restoring registers on unwind.
23316
23317 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23318
23319         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23320
23321 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23322
23323         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23324         and prolog/epilog for methods that use it. Allow
23325         enough param area room for varargs methods. Fix miguel's
23326         breakage in exception handling.
23327
23328 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23329
23330         * Makefile.am: run genmdesc only on current arch.
23331
23332 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23333
23334         * exceptions-x86.c:
23335         * mini-x86.h: fix the build on windows.
23336
23337 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23338
23339         * 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.
23340
23341         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23342
23343         * mini-exceptions.c: New file.
23344         
23345         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23346         Move some parts of the x86 exception handling code to an 
23347         arch-independent file so it can be shared with other ports.
23348
23349 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23350
23351         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23352
23353 2004-04-26  David Waite  <mass@akuma.org>
23354
23355         * driver.c: remove comma from end of enumeration declaration
23356
23357 2004-04-26  Jackson Harper  <jackson@ximian.com>
23358
23359         * driver.c: parse config file before loading first assembly. This
23360         allows the user gac to be enabled/disabled. 
23361         
23362 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23363
23364         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23365         simpler mechanism: we do not care what is encoded initially
23366         (branch absolute or relative), we care about the code and its
23367         target.  I kept the old code for reference for now.
23368
23369         The new code tries first to determine if the jump is anywhere in
23370         the -/+32 absolute meg range, if it succeeds, it encodes using the
23371         absolute branch;  If not, it tried to find something in the
23372         relative range, if not, it uses the handle_thunk code. 
23373
23374 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23375
23376         * exceptions-ppc.c: use the correct ip register on macosx.
23377
23378 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23379
23380         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23381
23382 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23383
23384         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23385         Raise exception on integer divide by zero by hand since the hw
23386         doesn't support it. Handle NaNs in FP compares.
23387
23388 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23389
23390         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23391         code reducing duplication between the platforms and enabled
23392         signal exception handling (on linux for now).
23393
23394 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23395
23396         * exceptions-ppc.c: more macosx support.
23397
23398 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23399
23400         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23401
23402 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23403
23404         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23405
23406 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23407
23408         * iltests.il: more tests.
23409
23410 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23411
23412         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23413         vars as well.
23414
23415 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23416
23417         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23418
23419 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23420
23421         * liveness.c: Mark variables as volatile in all basic blocks reachable
23422         from exception clauses.
23423
23424 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23425
23426         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23427         inlining.
23428
23429 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23430
23431         * iltests.il, basic.cs: more tests for regalloc.
23432
23433 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23434
23435         * iltests.il: Some tests for register allocation modifications
23436         I have locally.
23437
23438 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23439
23440         * exceptions.cs: Add regression test for bug #56782.
23441
23442         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23443         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23444         the beauty of fixing the same thing in 5 different files...
23445
23446 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23447
23448         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23449         methods.
23450
23451 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * mini.c: Add support for STRWLPARRAY marshalling convention.
23454
23455 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23456
23457         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23458         to init the context to setup the regs pointer).
23459
23460 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23461
23462         * exceptions-ppc.c: more exceptions work.
23463
23464 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23465
23466         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23467         not allowed.
23468
23469 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23470
23471         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23472         can use the memory directly.
23473
23474         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23475
23476         add x86_add_membase, x86_sub_membase, x86_mul_membase
23477
23478 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23479
23480         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23481         GENERAL_REGS they were also hardcoded for all PPC ports.
23482
23483         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23484
23485         Remove hard-coded limit for floating point registers, use
23486         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23487
23488         Notice that in MacOS X calling conventions you can fit a lot more
23489         floating point values in registers, so I should update the PInvoke
23490         test to excercise the passing of floating point values on the
23491         stack (currently broken).
23492         
23493 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23494
23495         * tramp-ppc.c (create_trampoline_code): Added
23496         JUMP_TRAMPOLINE_SIZE. 
23497         (ppc_magic_trampoline): Follow the pattern from
23498         x86_magic_trampoline: if code is set to zero, return. 
23499         (create_trampoline_code): Always pass MonoMethod to the jump
23500         trampoline, before it was passing a null.
23501         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23502         share the code with mono_arch_create_jit_trampoline. 
23503
23504         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23505         implemented.
23506         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23507         implemented.  
23508
23509         * cpu-g4.md: Added length for jmp instruction, the worst case
23510         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23511         for save_lmf).
23512
23513 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23516
23517 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23518
23519         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23520         before each IL instruction.
23521
23522         * mini.c (CEE_BOX): Fix warnings.
23523
23524 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23525
23526         * mini.c: removed a few unused vars and extra whitespace.
23527
23528 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23529
23530         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23531         checks.
23532         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23533         index.
23534         (OP_GETCHR): use the above
23535         (CEE_LDELEMA): use the above.
23536
23537         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23538         version of the generic impl.
23539         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23540         (CEE_LDELEMA): use the above.
23541
23542 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23543
23544         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23545         Fixes #56317.
23546
23547         * iltests.il: Added new regression test for #56317.
23548
23549 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23550
23551         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23552         under NetBSD. Fixes #56450.
23553
23554         * liveness.c (update_gen_kill_set): Fix previous patch.
23555
23556 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23557
23558         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23559
23560 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23561
23562         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23563         ldsfld and ldsflda.
23564
23565         * inssel-sparc.brg: Add more optimizations.
23566
23567         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23568
23569 2004-04-01  Martin Baulig  <martin@ximian.com>
23570
23571         * mini.c (handle_box): New static function; moved the
23572         implementation of CEE_BOX here.
23573         (mono_method_to_ir): Added `constrained_call' variable.
23574         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23575         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23576         mono_method_get_constrained() to get the method.
23577
23578 2004-04-01  Martin Baulig  <martin@ximian.com>
23579
23580         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23581         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23582         (mono_method_to_ir): We don't need these macros anymore since
23583         mono_class_get_full() already takes care of it. 
23584
23585 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23586
23587         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23588         use @function (as doesn't accept #function here) and check the return
23589         value of system and stop if fails.
23590
23591 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23592
23593         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23594
23595 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23596
23597         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23598
23599         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23600
23601         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23602         #56223.
23603
23604         * basic-long.cs: Add test for negation of Int64.MinValue.
23605
23606 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23607
23608         * mini-sparc.c: Update status.
23609
23610         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23611
23612         * exceptions-sparc.c: Fix return value in filters.
23613
23614         * inssel-sparc.brg: Fix register allocation in some rules.
23615
23616 2004-03-28  Martin Baulig  <martin@ximian.com>
23617
23618         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23619         if neccessary.  
23620
23621 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23622
23623         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23624         
23625         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23626         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23627         remove unused conv_u4 opcode.
23628
23629         * mini-x86.c: Remove valgrind workaround since it slows down things
23630         even when mono is not run under valgrind.
23631
23632 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23633
23634         * mini-sparc.c: Update status.
23635
23636         * inssel-sparc.brg: Add some optimizations.
23637
23638         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23639         future delay slot filling. Add support for varargs, tail calls and JMP.
23640
23641         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23642         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23643
23644         * inssel.brg: Fix register allocation in OP_ARGLIST.
23645
23646         * inssel.brg: Fix warnings.
23647
23648 2004-03-25  Martin Baulig  <martin@ximian.com>
23649
23650         * mini.c (inflate_generic_field): Removed.
23651         (mini_get_method): Removed, use mono_get_method_full(),
23652         (mini_get_class): Removed, use mono_class_get_full().
23653         (mono_method_to_ir): Pass our generic context to
23654         mono_field_from_token().        
23655
23656 2004-03-25  Martin Baulig  <martin@ximian.com>
23657
23658         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23659         of a `MonoMethod *'.
23660         (mini_get_method): Take a `MonoGenericContext *' instead
23661         of a `MonoMethod *'.
23662         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23663         a new local variable called `generic_context' which holds the
23664         current `MonoGenericContext *'; use it to lookup things.
23665
23666 2004-03-24  Martin Baulig  <martin@ximian.com>
23667
23668         * mini.c (mini_get_class): New static method; if we're inside a
23669         generic instance, inflate the class if neccessary.
23670         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23671
23672 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * iltests.il: New regression test for #55976.
23675
23676         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23677         #55976.
23678
23679 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23680
23681         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23682         output.
23683
23684 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23685
23686         * liveness.c: Consider SSA stores as well as loads when making vars
23687         volatile.
23688
23689         * exceptions.cs: New regression tests for register allocation.
23690         
23691 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23692
23693         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23694         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23695           domain lock only to protect puntual access to data structures.
23696           Added access lock for sighash, jit_icall_hash_name, 
23697           jit_icall_hash_addr and domain->code_mp.
23698
23699 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23700
23701         * driver.c: Print SIGSEGV handling method.
23702
23703         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23704
23705         * mini.c (setup_jit_tls_data): Handle case when this is called
23706         multiple times for a thread.
23707
23708         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23709         is different from fbxx_un. Fixes #54303. Also use constants instead of
23710         magic numbers in a lot of places.
23711
23712 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * exceptions.cs: Fix cctor test when --regression is used.
23715
23716 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23717
23718         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23719         for Linux/ppc.
23720
23721 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23722
23723         * inssel-ppc.brg: fixed register assignments for some rules.
23724
23725 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23726
23727         * exceptions.cs: Add test for exceptions in static constructors.
23728
23729         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23730         static constructors outside the domain lock. Fixes #55720.
23731
23732 2004-03-17  Martin Baulig  <martin@ximian.com>
23733
23734         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23735         (inflate_generic_field): Take the `MonoMethod *' instead of the
23736         `MonoClass *' and added support for generic method.
23737         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23738         have a `field->parent->gen_params', only inflate the field if it's
23739         an open constructed type.
23740
23741 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23742
23743         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23744         exception object instead of the preconstructed ones.
23745
23746 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23747
23748         * mini.c: reverted changed to sigsegv_signal_handler commited
23749         accidentally in the previous patch.
23750
23751 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23752
23753         * mini.c:
23754         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23755         running --aot with an old assembly.
23756
23757 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23758
23759         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23760         point values.
23761
23762         * mini-sparc.c: Add support for v9 branches with prediction.
23763
23764 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23765
23766         * mini.c (mini_init): #warning is GNUC only
23767
23768         * mini-sparc.h: implement __builtin_frame_address
23769         and __builtin_return_address for Sun C compiler
23770
23771 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23772
23773         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23774
23775 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * basic-calls.cs: Add test for unaligned byref long argument passing.
23778
23779         * mini-ops.h: Add sparcv9 compare and branch instructions.
23780
23781         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23782         v9 instructions if we have a v9 cpu.
23783
23784         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23785         registers for global allocation.
23786
23787         * exceptions-sparc.c: Fixes.
23788         
23789 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23790
23791         * liveness.c (mono_analyze_liveness): Optimized version.
23792
23793         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23794
23795         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23796         sparc work.
23797
23798         * basic-float.cs basic-calls.cs: New regression tests.
23799
23800 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23801
23802         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23803         sigaltstack implementation.
23804
23805         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23806         
23807         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23808         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23809
23810 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23811
23812         * mini.c: Fix warnings.
23813         
23814         * mini.c (mono_resolve_patch_target): New function which contains the
23815         arch independent part of the patching process.
23816
23817         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23818         patching code to a separate function.
23819
23820 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23821
23822         * mini.c (add_signal_handler): ifdef out on Windows
23823
23824 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23825
23826         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23827         cpu-sparc.md: Add exception handling support + other fixes.
23828
23829         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23830         typed GC detection in --version.
23831
23832         * basic.cs exceptions.cs: New regression tests.
23833
23834         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23835         the arch specific code can store data during a compilation.
23836
23837         * mini-ops.h: Add OP_SETFRET.
23838
23839         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23840         function, register a separate icall for each arity, so the icalls can
23841         get a wrapper.
23842         
23843         * mini.c (mono_print_tree): Print negative offsets in a more readable
23844         form.
23845         
23846         * mini.c: Make signal handling work on sparc.
23847         
23848         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23849
23850         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23851
23852         * jit-icalls.c: Emulate truncl by aintl on solaris.
23853
23854         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23855
23856 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23857
23858         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23859
23860 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23861
23862         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23863         a MarshalByRef type, inline a method that performs the check, taking into
23864         account that the object can be a proxy. Also implemented tow new opcodes:
23865         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23866         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23867         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23868
23869 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23870
23871         * mini-ppc.c: if a relative branch displacement is too big
23872         but it points to and area reachable with an absolute branch, 
23873         avoid the thunks.
23874
23875 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23876
23877         * mini.c: optimize small copies in cpblk.
23878
23879 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23880
23881         * basic-calls.cs basic-float.cs: New regression tests.
23882
23883         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23884         negative offsets from %fp. Implement localloc. Fix local register 
23885         allocation. Fix the case when the this argument needs to be saved to
23886         the stack. Implement some missing opcodes.
23887
23888 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * mini.c (mini_method_compile): Reenable global regalloc in methods
23891         with exception handlers.
23892
23893         * linear-scan.c (mono_varlist_sort): Fix warning.
23894
23895         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23896
23897         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23898         regalloc costs.
23899
23900         * liveness.c: Make all variables uses in exception clauses volatile, to
23901         prevent them from being allocated to registers. Fixes #42136.
23902
23903 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23906         causes regressions.
23907
23908         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23909         argument to mono_arch_regalloc_cost.
23910
23911         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23912         precisely.
23913
23914 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23915
23916         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23917         Make the cost of allocating a variable to a register arch dependent.
23918
23919         * basic-calls.cs: Fix compilation of tests.
23920         
23921         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23922         helper function to cut back on the number of #ifdefs needed.
23923
23924         * mini-ppc.c: Fix compilation.
23925
23926         * basic-calls.cs: New regression tests.
23927
23928         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23929
23930         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23931         of l0 since that is callee saved.
23932
23933         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23934         to virtual calls.
23935
23936         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23937         of delay instruction.
23938
23939         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23940
23941         * mini.h (MonoCallInst): Add 'virtual' flag.
23942
23943         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23944
23945 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * *.cs: New regression tests.
23948
23949         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23950         work.
23951
23952         * mini.c (mono_runtime_install_handlers): Fix build.
23953
23954         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23955         'signal_stack_size' members.
23956
23957         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23958         alternate signal stack.
23959
23960         * exceptions-x86.c: Add stack overflow handling.
23961
23962         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23963         functions to arch independent code.
23964
23965         * mini.c (mono_print_tree): Print more detailed info for load_membase
23966         opcodes.
23967         
23968 2004-02-23  Martin Baulig  <martin@ximian.com>
23969
23970         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23971
23972 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23973
23974         * mini-x86.c: fixed reg allocation for div/rem.
23975
23976 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23977
23978         * driver.c (mono_main): Report some configuratio options on --version.
23979
23980 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23981
23982         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23983         low in the address space. Correctly flush memory in thunks where we
23984         output native code.
23985
23986 2004-02-20  Martin Baulig  <martin@ximian.com>
23987
23988         * mini.c (mini_get_method): New static method; inflate all generic
23989         methods and methods in open generic instances.
23990         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23991         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23992
23993 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23996
23997         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23998
23999 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
24000
24001         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
24002
24003         * mini-sparc.c (flushi mono_arch_output_basic_block): make
24004         it compile using Sun's compiler.
24005
24006 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
24007
24008         * 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.
24009
24010         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
24011
24012 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
24013
24014         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
24015         code.
24016         * mini-ppc.c: handle calls outside of the allowed range with thunks
24017         allocated using the code manager.
24018         * tramp-ppc.c: use the code manager to hold generated native code.
24019         Fixed the magic trampoline to just patch vtable entries.
24020
24021 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
24022
24023         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
24024         independent file.
24025
24026 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24029         PPC.
24030
24031         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24032         if we have a working __thread implementation.
24033
24034         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24035         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24036
24037 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24038
24039         * mini-x86.c: Fix compilation under gcc 2.
24040         
24041 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24042
24043         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24044         contains a call to the wrapped function.
24045
24046         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24047         OP_<CALL>_IMM opcodes, and use them under X86.
24048         
24049         * mini.c (mono_jit_find_compiled_method): Fix warning.
24050
24051         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24052
24053         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24054
24055         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24056         functionality to mini.c.
24057
24058         * mini.c (mono_create_jump_trampoline): New function to create a jump
24059         trampoline. Return a compiled method instead of a trampoline if it
24060         exists. Add a cache for jump trampolines.
24061
24062         * mini.c (mono_jit_find_compiled_method): New function to return a
24063         compiled method if it exists.
24064
24065         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24066         mono_arch_create_jit_trampoline.
24067
24068         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24069         a jump trampoline. Fixes #52092.
24070         
24071 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24072
24073         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24074         which is not up-to-date. Add check_corlib_version () instead.
24075
24076         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24077         have to call it.
24078         
24079         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24080         since newer valgrind versions do not need it.
24081
24082         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24083         compile a method with a given set of optimizations.
24084
24085         * mini.c: Compile icall wrappers on-demand instead of at startup.
24086
24087         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24088         wrapper for an icall.
24089
24090 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24091
24092         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24093         #54063.
24094
24095         * iltests.il: Add test for non-empty stack before switch instruction.
24096
24097 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * mini.c: Add support for new stringbuilder marshalling conventions.
24100
24101         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24102
24103 2004-02-01  Martin Baulig  <martin@ximian.com>
24104
24105         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24106         in `ginst->mtype_argv'.
24107
24108 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24109
24110         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24111         facilitate grepping.
24112
24113 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24114
24115         * mini.c: fixed buglet in initobj generic implementation for references.
24116
24117 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24118
24119         * Makefile.am: make the version script conditional.
24120         * jit-icalls.c: handle missing truncl().
24121
24122 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24123
24124         * exceptions.cs: Add more tests for double->int conversion.
24125
24126         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24127         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24128
24129 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24130
24131         * driver.c: make --verbose --version emit an error
24132         if the loaded corlib doesn't match the runtime version.
24133
24134 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24135
24136         * mini-ppc.h: export ppc_patch().
24137         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24138         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24139         on par or better than on MacOSX.
24140
24141 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24142
24143         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24144         mono_lookup_pinvoke_call.
24145
24146         * mini-x86.c: Under windows, the default pinvoke calling convention is
24147         stdcall. Fixes #52834.
24148
24149         * mini.c (optimize_branches): Add an upper bound to the number of
24150         iterations to prevent infinite loops on strange loops. Fixes #53003.
24151
24152 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24155         and ISINST. Fixes #52093.
24156
24157         * objects.cs (test_0_vector_array_cast): New tests.
24158         
24159 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24160
24161         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24162         checking in Array.Set ().
24163
24164         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24165         #52590.
24166
24167         * object.cs (test_0_multi_array_cast): New regression test.
24168
24169 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24170
24171         * exceptions-ppc.c: fix build on Linux/PPC.
24172
24173 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24174
24175         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24176         running under valgrind.
24177         (x86_magic_trampoline): Fix build bustage.
24178
24179         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24180         negative values as well. This is needed for the encoding of the line number
24181         info, since sometimes the line numbers are not in increasing order.
24182
24183 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24184
24185         * cpu-pentium.md (localloc): Increase the size of the localloc 
24186         instruction since it is a loop under Win32.
24187
24188         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24189         allocation.
24190
24191 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24194         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24195         Max Horn (max@quendi.de). Fix file names in comments.
24196
24197 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24198
24199         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24200         avoid stack overflow.
24201         (replace_usage): Avoid uninitialized variable warnings.
24202
24203         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24204         and taking the address of valuetype variables.
24205
24206 2004-01-03  Patrik Torstensson
24207
24208         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24209         for other purposes than FP later on.
24210
24211 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24212
24213         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24214         of tail calls.
24215
24216 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24217
24218         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24219
24220 2003-12-30  Patrik Torstensson <p@rxc.se>
24221
24222         * mini-x86.h: Decreased number of availiable fp regs.
24223         Solves corner cases with FP spilling.
24224
24225 2003-12-23  Patrik Torstensson <p@rxc.se>
24226
24227         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24228         for floating point stack tracking / spilling on x86. 
24229         Fixes bug #49012.
24230         
24231         * basic-float.cs: added float mul overflow test.
24232
24233 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24234
24235         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24236
24237 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24238
24239         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24240         supports for cond branches that overflow the immediate
24241         overflow offset. mcs can compile simple programs.
24242
24243 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24244
24245         * exceptions-ppc.c: exception handling support wip:
24246         finally handlers get run on exception.
24247
24248 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24249
24250         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24251         profiling.
24252
24253 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24254
24255         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24256         initial support for stack walking and unwinding.
24257
24258 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24259
24260         * driver.c (mono_main): Make corlib-out-of-sync message more 
24261         descriptive. Also remove verify_corlib call.
24262
24263 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24264
24265         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24266         not overlap with other call's arguments, too.
24267
24268 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24269
24270         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24271         move to arch-specific code the choice of arch-specific
24272         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24273         * mini.c: ensure emulation calls will not interleave
24274         with other calls.
24275
24276 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24277
24278         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24279         the magic trampoline stack frame is dropped before executing
24280         the new method.
24281
24282 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24283
24284         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24285         and integer to fp conversions. Added support for overflowing
24286         arguments on the stack. Reserve a couple more registers as temps.
24287         Added support for aot compilation (as output still needs to be
24288         tweaked, though).
24289
24290 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24291
24292         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24293         Don't overwrite return register in some corner cases.
24294
24295 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24296
24297         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24298         static constructors when AOT compiling.
24299
24300         * driver.c (mono_main): Call mono_check_corlib_version.
24301
24302 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24303
24304         * cpu-g4.md, basic.cs: fixed div target register.
24305
24306 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24307
24308         * mini-ppc.c, basic.cs: shl_imm fix with test.
24309
24310 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24311
24312         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24313         structures by value. Misc fixes.
24314         * objects.cs: more tests.
24315
24316 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24317
24318         * mini-ppc.c: lconv.ovf.i implemented.
24319
24320 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24321
24322         * mini.c:
24323         (mini_init): don't error out if someone already called g_thread_init.
24324
24325 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24326
24327         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24328         to be any type per the spec. Fix abnormal memory usage when
24329         the same object is repeatedly thrown.
24330
24331 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24332
24333         * mini.c: check for overruns in IL code.
24334
24335 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24336
24337         * TODO: Add/remove some todo entries.
24338
24339 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24340
24341         * driver.c (mono_main): Call mono_verify_corlib.
24342
24343 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24344
24345         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24346         This has been moved to mini.c
24347         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24348         type being casted is marshalbyref it could be a proxy, so instead of
24349         emitting the type check code, emit a call to a runtime method that will
24350         perform the check by calling CanCastTo if needed.
24351
24352 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24353
24354         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24355         methods with large stack frames under Win32.
24356
24357 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * Makefile.am: Distribute regression tests.
24360
24361         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24362         at the end instead of inserting each variable into the sorted list.
24363
24364         * linear-scan.c (mono_varlist_sort): New helper function.
24365         
24366 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24367
24368         * mini.c: ensure arguments and locals are within bounds.
24369
24370 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24371
24372         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24373         related fixes.
24374
24375 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24376
24377         * mini.c (mono_cprop_copy_values): Fix crash.
24378
24379         * aot.c: Set verbosity back to 0.
24380         
24381 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24382
24383         * regalloc.c: complete memory leak fix by Laurent Morichetti
24384         (l_m@pacbell.net).
24385
24386 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24387
24388         * driver.c (main_thread_handler): Revert the previous patch.
24389
24390         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24391         under valgrind.
24392
24393         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24394         memory from the memory pool.
24395
24396         * driver.c (main_thread_handler): Turn on all optimizations when
24397         --aot is used.
24398
24399         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24400         an array for better performance.
24401
24402         * regalloc.c (mono_regstate_assign): Fix memory leak.
24403
24404         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24405         serialize the debug info.
24406
24407         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24408         debug info from the serialized representation.
24409
24410         * aot.c: Save debug info into the generated file and load it when 
24411         loading a method.
24412
24413         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24414
24415 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24416
24417         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24418         More FP-related fixes.
24419
24420 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24421
24422         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24423         and register allocation buglet. Hello world now runs.
24424
24425 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24426
24427         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24428         * tramp-ppc.c: fixed class init trampoline.
24429         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24430
24431 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24432
24433         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24434         mini.c: more ppc changes/fixes.
24435
24436 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24437
24438         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24439         Also optimize the case when the arguments are the same in the caller 
24440         and in the callee.
24441
24442         * iltests.il: Add tests for tail calls with valuetype arguments.
24443
24444 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24445
24446         * mini-ppc.c: fixes for struct return type.
24447
24448 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24449
24450         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24451         mono_spillvar_offset() to arch-specific code.
24452
24453 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24454
24455         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24456
24457 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24458
24459         * exceptions-x86.c: Fix stack space leaks.
24460         
24461         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24462         registers from the lmf if the method has save_lmf set.
24463
24464 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24467         of icall wrappers into InvokeInDomain, since these are now per-domain.
24468
24469 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24470
24471         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24472         make some opcode emulation and intrinsic ops enabled/disabled 
24473         according to the architecture. More fixes.
24474
24475 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24476
24477         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24478
24479 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24480
24481         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24482         arch-specific handling for 'this' and struct return type to
24483         arch-specific code.
24484
24485 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24486
24487         * aot.c: prevent divide by zero error when reporting (it happened with
24488         Accessibility.dll).
24489
24490 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24491
24492         * mini.h (inst_switch): Remove unused macro.
24493
24494 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24495
24496         * aot.c:
24497         (load_aot_module): free 'info->methods' and 'info' properly. No more
24498         "free(): invalid pointer blah" messages when you have an old aot
24499         compiled assembly.
24500
24501 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24502
24503         * jit-icalls.c, mini.c: Added support for context static fields.
24504
24505 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24506
24507         * mini.c (mono_method_blittable): Methods which set LastError are not 
24508         blittable either. Fixes #51108.
24509         
24510 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * mini.c: flush icache.
24513         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24514
24515 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24516
24517         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24518
24519 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24520
24521         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24522         safe on IA32.
24523
24524         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24525         vararg calls.
24526
24527         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24528
24529 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24530
24531         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24532         instruction when the result is discarded.
24533
24534         * iltests.il (test_0_div_regalloc): New regression test.
24535
24536         * arrays.cs: Fix compilation error.
24537
24538 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24539
24540         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24541         float rules to inssel-x86.brg: sane architectures with FP registers
24542         don't need to implement these rules.
24543
24544 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24545
24546         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24547
24548 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24549
24550         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24551         implementation of 32 bit systems.
24552
24553 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24554
24555         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24556         (Jeroen Zwartepoorte).
24557
24558 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24559
24560         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24561         the caller and the callee matches.
24562         
24563         * mini.c (mono_method_to_ir): Add comment.
24564
24565         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24566         signbit is missing on some platforms.
24567
24568 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24571
24572         * mini.c (setup_jit_tls_data): Call the new function.
24573         
24574         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24575
24576         * mini-x86.c: Add experimental support for fast access to the lmf
24577         structure under NPTL/Linux 2.6.x.
24578
24579 2003-11-06  Martin Baulig  <martin@ximian.com>
24580
24581         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24582         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24583         the debugger.
24584
24585 2003-11-02  Martin Baulig  <martin@ximian.com>
24586
24587         * mini.c (inflate_generic_field): New static method.
24588         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24589         generic instance and the field is declared in a generic type, call
24590         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24591
24592 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24593
24594         * mini.h mini.c (mono_method_same_domain): New function to return
24595         whenever the caller and the callee are in the same domain.
24596
24597         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24598
24599 2003-10-30  Martin Baulig  <martin@ximian.com>
24600
24601         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24602         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24603         method parameters.
24604         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24605         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24606
24607 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24608
24609         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24610         propagation.
24611
24612         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24613         object here, so it is in the correct appdomain etc.
24614
24615 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24616
24617         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24618         already done.
24619         (mono_method_to_ir): Avoid freeing the type created returned from
24620         mono_type_create_from_typespec, since it is put into an internal cache
24621         by the function. Fixes pointer.exe.
24622
24623         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24624         trampolines for icalls and pinvokes as well. Fixes #33569.
24625
24626 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24627
24628         * mini.c: Update after appdomain changes.
24629
24630         * mini.c (mono_jit_compile_method_inner): Allways compile native
24631         method wrappers in the root domain, since there can only be one
24632         instance of them, whose address is stored in method->info.
24633
24634 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24635
24636         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24637         environment variable. Instead detect automatically whenever running
24638         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24639         valgrind.h.
24640
24641 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24642
24643         * trace.c, trace.h: New files that implement the new trace option
24644         parsing. 
24645
24646         * driver.c: Document new --trace options.
24647
24648         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24649         mini-x86.c: Apply:
24650
24651         -       if (mono_jit_trace_calls)
24652         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24653
24654         * mini.h: prototypes.
24655         
24656 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24657
24658         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24659
24660         * mini.c inssel.brg: Implement typedefbyref opcodes.
24661
24662         * mini.c (mono_jit_compile_method): Remove unused local variable.
24663
24664         * mini.c (mono_jit_compile_method_inner): Ditto.
24665         
24666 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24667
24668         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24669         
24670         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24671
24672 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24673
24674         * mini.c (mono_no_aot): Remove unused global variable.
24675
24676         * mini.c: Thread safety fixes.
24677
24678 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24679
24680         * mini.c (mono_create_class_init_trampoline): Add a lock around
24681         class_init_hash_addr.
24682
24683         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24684         #30073.
24685
24686         * mini.c: Decompose the NEWARR instruction before decomposing its
24687         arguments. Fixes #30073.
24688
24689 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24690
24691         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24692         convention.
24693
24694 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24695
24696         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24697
24698         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24699
24700         * driver.c: Add support for compiling icall wrappers to --compile.
24701
24702 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24703
24704         * inssel.brg: The empty value in class->interface_offsets is -1, not
24705         0. Fixes #49287.
24706
24707 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         * objects.cs: New test for 'is' operator on an array of interfaces.
24710
24711 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24712
24713         * tramp-ppc.c: update trampoline code to support jumps
24714         and class initialization.
24715
24716 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24717
24718         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24719
24720         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24721
24722         * inssel.brg (OP_UNBOX): Remove unused rule.
24723
24724         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24725         region instead of one for each method. Fixes #47813.
24726
24727 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24728
24729         * exceptions.cs (test_0_nested_finally): New regression test for
24730         nested exception handlers.
24731
24732         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24733
24734         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24735
24736         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24737         inlining.
24738
24739         * mini.c (mono_method_check_inlining): Make the inlining limit 
24740         configurable by an environment variable.
24741         
24742         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24743
24744         * mini.h: Bump AOT file version.
24745
24746         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24747         token, store the image along with the token, since the token might not 
24748         refer to the same image as the method containing the relocation, 
24749         because of inlining.
24750
24751 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24752
24753         * mini.c (mono_precompile_assemblies): New function to compile
24754         all methods in all loaded assemblies.
24755
24756         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24757
24758         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24759         iassign and fassign to int*, since they can contain large negative
24760         values if the register is spilled. Also added some comments. Fixes
24761         #45817.
24762
24763         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24764         under Win32. Fixes #42964.
24765
24766 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24767
24768         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24769
24770         * aot.c: Added support for AOT compiling methods which contain calls
24771         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24772         handled.
24773         
24774         * driver.c (compile_all_methods): Run the compilation in a thread
24775         managed by mono. Fixes #44023.
24776
24777         * mini.c (mono_codegen): Print full method name in verbose output.
24778
24779         * mini-x86.c (mono_arch_patch_code): Fix warning.
24780         
24781         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24782         jumps, since the method we are jumping to might be domain-specific.
24783
24784         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24785
24786 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24787
24788         * inssel.brg: string chars are unsigned.
24789
24790 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24791
24792         * TODO: New todo item.
24793
24794         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24795         which calls mono_runtime_class_init and patches the call site to
24796         avoid further calls.
24797         (mono_arch_create_class_init_trampoline): New arch specific function 
24798         to create a class init trampoline.
24799         (create_trampoline_code): Generalized so it can create
24800         class init trampolines as well.
24801
24802         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24803         (mono_create_class_init_trampoline): New function to create and cache
24804         class init trampolines.
24805         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24806         vtable given the address of a class init trampoline. Used by the
24807         patching process.
24808         (mono_codegen): Generate a call to a trampoline instead of
24809         mono_runtime_class_init in LDSFLD[A].
24810         (mono_codegen): Add relocations for the new trampoline.
24811         
24812         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24813         MONO_PATCH_INFO_CLASS_INIT.
24814
24815         * mini.h: Bump AOT version number.
24816
24817         * aot.c: Create a copy of the loaded code instead of using the original
24818         so methods which call each other will be close in memory, improving
24819         cache behaviour.
24820         
24821         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24822         patch since it breaks the regression tests.
24823         
24824         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24825         for the register saving instruction sequence since the 
24826         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24827
24828 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24829
24830         * TODO: Fix todo item && remove another.
24831
24832 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24833
24834         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24835         previous checkin.
24836
24837         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24838         function of the module.
24839
24840         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24841         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24842         --no-aot command line option.
24843
24844 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24845
24846         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24847         by Bernie Solomon (bernard@ugsolutions.com).
24848
24849         * inssel.brg: Refactor the interface offset table related code into
24850         its separate functions and add support for the AOT case.
24851
24852 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24855         
24856         * aot.c: Added mono_aot_verbose variable and made all debugging
24857         output depend on the value of this variable.
24858
24859         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24860         method_label and info_label.
24861
24862         * mini.h mini-x86.c aot.c: Added a new relocation type 
24863         MONO_PATCH_INFO_IID for klass->interface_id.
24864
24865         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24866         the MonoJitInfo structure.
24867
24868         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24869         a non-root appdomain in shared mode.
24870
24871 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24872
24873         * aot.c: make aot loader less verbose. Remove free of unused variable.
24874
24875 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24876
24877         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24878
24879         * .cvsignore: Added *.dll.
24880
24881         * mini.c (mono_print_tree_nl): New function callable while debugging.
24882
24883         * mini.c (mono_print_code): Export this.
24884
24885         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24886         patched code.
24887
24888 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24889
24890         * mini.h (MonoCompile): Added 'jit_info' field.
24891
24892         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24893         the cfg structure, since it is needed by the AOT compiler.
24894
24895         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24896
24897         * aot.c: A major rewrite. Changes include:
24898         - save exception tables for methods which have them.
24899         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24900         to g_module_symbol.
24901         - reworked the file format so it is now much smaller and needs
24902         fewer relocation entries.
24903         
24904 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24905
24906         * aot.c (load_aot_module): Fix build bustage on platforms without
24907         Boehm GC.
24908
24909 2003-09-04  Martin Baulig  <martin@ximian.com>
24910
24911         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24912
24913 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24914
24915         * TODO: Some new optimization ideas.
24916
24917         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24918
24919         * aot.c: Save the optimization flags used to compile the code into
24920         the AOT module.
24921
24922         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24923         support emitting domain specific code.
24924         
24925         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24926         no longer domain neutral. It can be made domain neutral by compiling 
24927         with --optimize=shared.
24928
24929         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24930         between appdomains.
24931
24932         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24933         loading of AOT code.
24934
24935         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24936         
24937         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24938         if there is no domain neutrality information.
24939
24940 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24941
24942         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24943         format version into the generated library.
24944
24945         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24946         callee method into the caller since one of them could be shared.
24947
24948         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24949         system exceptions from AOT code now works.
24950
24951         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24952         method if it is domain neutral and the callee is not.
24953
24954         * graph.c (cfg_emit_one_loop_level): Fix warning.
24955
24956 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24957
24958         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24959         last checkin.
24960
24961 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24962
24963         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24964         is needed  by code which is executed before mono_runtime_init ().
24965         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24966         
24967         * mini.c (mono_thread_abort): Fix warning.
24968         (mono_jit_compile_method): Call static constructor in the AOT case too.
24969
24970         * aot.c (mono_compile_assembly): Fix warning.
24971
24972 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24973
24974         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24975
24976 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24977
24978         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24979
24980         * cpu-pentium.md: Fix the length of call opcodes so they include the
24981         ESP restoring instruction. Fixes #47968.
24982
24983 2003-08-28  Martin Baulig  <martin@ximian.com>
24984
24985         * mini-x86.c (mono_arch_call_opcode): Added support for
24986         MONO_TYPE_GENERICINST.
24987
24988         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24989
24990 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24991
24992         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24993         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24994
24995         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24996         metadata_section.
24997
24998 2003-08-26  Martin Baulig  <martin@ximian.com>
24999
25000         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
25001         when reporting an error, set this to the actual error location.
25002         (mono_method_to_ir): Report the correct error location if
25003         get_basic_blocks() returned an error.
25004
25005 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25006
25007         * mini.c (mono_type_blittable): OBJECT is not blittable.
25008         (mono_method_blittable): Methods which have marshalling descriptors
25009         are not blittable either. Fixes #47842.
25010
25011 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
25012
25013         * driver.c mini.c: Use an environment variable instead of a global 
25014         variable. Also fix the build.
25015
25016         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
25017         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
25018         reporting this. 
25019
25020         * driver.c mini.c: Added --with-valgrind option to turn off some
25021         code which prevents mono from running under valgrind.
25022
25023         * mini.c (mono_emit_call_args): Fixed warning.
25024
25025         * mini.c (mono_emulate_opcode): Fixed warning.
25026
25027 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25028
25029         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25030         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25031         regalloc.c, regalloc.h: specify available registers in arch-specific
25032         code and support floats in the regallocator (patch by Laurent Morichetti 
25033         <l_m@pacbell.net>)
25034
25035 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25036
25037         * mini.c: mono_thread_current() can be called only after
25038         mono_runtime_init(): rearrange code to not call it early on.
25039
25040 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25041
25042         * mini.c: allocate jump tables in the code mempools.
25043
25044 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25045
25046         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25047         freed.
25048
25049 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25050
25051         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25052         12 to 16.  This fixes bug #47453.
25053
25054
25055 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25056
25057         * mini-ppc.c: fixed indexed load and unsigned compares.
25058
25059 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25060
25061         * mini.c: reenabled installation of handler for
25062           thread abort signal.
25063
25064 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25065
25066         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25067         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25068         until it's fixed and actually useful.
25069
25070 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25071
25072         * inssel-long32.brg: couple more opcodes implemented.
25073
25074 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25075         
25076         * mini-sparc.c: Even more opcodes implemeted.
25077
25078 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25079
25080         * mini-sparc.c: More opcodes implemented.
25081
25082 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25083
25084         * mini-sparc.c: More opcodes implemented.
25085
25086 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25087
25088         * inssel-sparc.brg: Add some needed rules.  Direct
25089         copy from PPC.
25090         * Makefile.am: Use inssel-sparc.brg
25091         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25092         an assert happy for now.
25093
25094 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25095
25096         * mini-sparc.c: Fixed compile errors.
25097         * exceptions-sparc.c: Same.  We now produce a mono binary 
25098         on sparc-linux.  Yea.
25099
25100 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25101
25102         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25103         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25104         They compile, but do not work.
25105
25106 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25107
25108         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25109         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25110         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25111         (ct@gentoo.org).
25112
25113 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25114
25115         * mini.c: more opcodes implemented and better support for generics.
25116
25117 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25118
25119         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25120         * mini.c, mini.h: first cut at generics support: some new instructions 
25121         added and changed the behaviour of some of the existing ones.
25122
25123 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25124
25125         * mini.c: Removed definition of metadata_shared mutex here.
25126
25127 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25128
25129         * mini-x86.c: make vararg calls work for instance methods.
25130
25131 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25132
25133         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25134         returns the arguments in a separte list, now.
25135
25136 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25137
25138         * aot.c, mini.c: updates for array type representation changes.
25139
25140 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25141
25142         * mini.c: register function to perform jit shutdown.
25143
25144 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25145
25146         * mini.c: use a faster allocator if possible.
25147
25148 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25149
25150         * aot.c: some cleanups and portability changes.
25151
25152 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25153
25154         * mini.c: use faster allocation for CEE_BOX if possible.
25155
25156 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25157
25158         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25159         Moved inlined mempcy code to its own function so that is can be
25160         reused. Added an inline memset function as well (optimized initobj).
25161         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25162
25163 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25164
25165         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25166
25167 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25168
25169         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25170         arch code can setup the cpu for CLR execution, if needed.
25171         We use it on x86 to set the precision of FP operations.
25172
25173 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25174
25175         * mini.c: disable some optimizations if we can guess they'll cost too
25176         much for a given method.
25177
25178 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25179
25180         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25181         
25182 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25183         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25184         info collection support.
25185
25186 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25189         is now implemented in the profiling API. Get rid of a couple of
25190         unnecessary global variables.
25191
25192 2003-06-15  Nick Drochak <ndrochak@gol.com>
25193
25194         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25195         * cpu-g4.md: add op_bigmul and op_bigmul_un
25196         * cpu_pentium.md: add op_bigmul_un
25197         * inssel-long32.brg: add rule for unsigned bigmul
25198         * mini-ops.h: define OP_BIGMUL_UN
25199         * mini-x86.c: THE BUG: handle (un)signed properly
25200         * mini.c: choose unsigned opcode if needed.
25201         This set of patches fixes bug #44291
25202
25203 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25204
25205         * mini.c (optimize_branches): improved to handle all kinds of
25206         conditional branches.
25207
25208 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25209
25210         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25211         don't raise exceptions.
25212
25213 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25214
25215         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25216         to arch-specific files.
25217
25218 2003-06-09  Martin Baulig  <martin@ximian.com>
25219
25220         * Makefile.am (libs): Added $(LIBGC_LIBS).
25221
25222 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25223
25224         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25225         and OP_ATAN (fixes bug#44293).
25226
25227 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * Makefile.am, mini-x86.c: rename cpu description array to
25230         pentium_desc, since some compilers define the 'pentium' preprocessor
25231         symbol.
25232
25233 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25234
25235         * mini.c (mini_select_instructions): add explicit branch if the
25236         following block is not the false target of a conditional branch -
25237         we need this with any optimization that reorder or remove bblocks
25238
25239         * mini.c (optimize_branches): bug fixes
25240
25241 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25242
25243         * mini.c (mono_method_to_ir): inline static readonly fields
25244
25245         * ssa.c (fold_tree): start cfold support for long (very simple
25246         cases only)
25247
25248         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25249
25250 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25251
25252         * inssel.brg: fixed memcpy (bug #44219).
25253
25254 2003-06-05  Dick Porter  <dick@ximian.com>
25255
25256         * driver.c: Set the glib log levels to not abort if g_message
25257         recurses.
25258
25259         g_set_prgname() has to happen before mini_init() so that the
25260         process handle gets the info.
25261         
25262 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25263
25264         * driver.c: add intrins to the default optimizations to get wider
25265         exposure.
25266
25267 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25268
25269         * mini.h: some large basic blocks will overflow a 16-bit
25270         integers for symbolic registers.
25271
25272 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25273
25274         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25275         (mono_arch_output_basic_block): fix bug 43499 
25276
25277 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25278
25279         * mini.c: kill duplicated definition of mono_debug_format.
25280
25281 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25282
25283         * mini-x86.c, arrays.cs: fixed register allocation bug.
25284
25285 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25286
25287         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25288
25289         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25290
25291 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25292
25293         * mini.c:
25294         (print_method_from_ip): also print source location information if
25295         available.
25296
25297 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25298
25299         * mini.c (mono_find_block_region): bug fix in region code
25300         (mini_method_compile): enable removing unreachable code again, but
25301         only in methods without exception clauses.
25302
25303 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25306         Implemented arglist opcode and handling of TypedReference type.
25307         Fixed x86 call convention when a structure is returned.
25308         Minimal support for calling static vararg methods.
25309
25310 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25311
25312         * mini.c (mini_method_compile):  always remove unreachable code,
25313         because the code in them may be inconsistent  (access to dead
25314         variables for example).
25315
25316 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25317
25318         * driver.c, debug-mini.c: warning fixes.
25319
25320 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25321
25322         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25323
25324 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25325
25326         * mini.c: thread-static fields are registered in mono_class_vtable(),
25327         so ensure the function is called before checking for them.
25328
25329 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25330
25331         * mini.c (optimize_branches): fix for bug 43586
25332
25333         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25334         overflow (fixes Bug #43639)
25335
25336 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25337
25338         * mini.c, objects.cs: allow the use of stobj for primitive types.
25339
25340 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25341
25342         * mini.c: be less strict about argument checking until we support
25343         running the verifier.
25344
25345 2003-05-27  Nick Drochak <ndrochak@gol.com>
25346
25347         * basic-long.cs: tests for (ulong)int * (ulong)int also
25348         * mini.c: use the same trick for (ulong)int * (ulong)int
25349
25350 2003-05-27  Nick Drochak <ndrochak@gol.com>
25351
25352         * basic-long.cs: add regression test for (long)int * (long)int
25353         * cpu-pentium.md: add op_bigmul specification
25354         * inssel-long32.brg: add OP_BIGMUL rule
25355         * mini-ops.h: add OP_BIGMUL
25356         * mini-x86.c: register allocator: handle case where src1 needs to be
25357         in EAX.
25358         * mini.c: substitute special BIGMUL opcode in the tree for 
25359         (long)int * (long)int
25360
25361 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25362
25363         * jit-icalls.c: call the type ctor on field access if needed.
25364
25365 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25366
25367         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25368         to a method (including results of ldelema, bug#43207).
25369
25370 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25371
25372         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25373         colors to show exception handler blocks.
25374
25375         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25376         (fix for pinvoke7.cs).
25377
25378 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25379
25380         * mini.h, mini.c: ensure correct initialization order for types that
25381         require it. Prepare for lazy compilation of jit icall wrappers.
25382         Provide a name for opcode emulation to reduce unneeded mallocing.
25383
25384 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25385
25386         * mini-x86.c: better register restoring code and profiling
25387         support for tail calls.
25388
25389 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25390
25391         * mini.h, driver.c: prepare for leaf methods optimization.
25392
25393 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25394
25395         * mini.c: get targets of branches before converting a method.
25396
25397 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25398
25399         * mini.c (optimize_branches): added some experimental code (disbaled) 
25400
25401 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini.c (optimize_branches): fix branch to branch optimization 
25404
25405         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25406
25407         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25408
25409         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25410
25411         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25412         if needed.
25413
25414 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25415
25416         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25417         enable use of interface variables again.
25418
25419         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25420         I1 to registers because there is no simply way to sign extend 8bit
25421         quantities in caller saved registers on x86.
25422
25423         * inssel-float.brg: set costs of some rules to 2 so
25424         that monobure always select the arch. specific ones if supplied,
25425         regardless of the order we pass the files to monoburg.
25426
25427 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25428
25429         * mini.c, mini-x86.c: since the magic trampoline for jumps
25430         can't patch the code directly, we do it as soon as the
25431         method gets compiled.
25432
25433 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25434
25435         * mini-x86.c, mini.h: introduce a new patching method
25436         to support CEE_JMP and tail calls.
25437         * mini.c: obey tail.call. Don't precompile methods target
25438         of CEE_JMP.
25439         * tramp-x86.c: new trampoline code to handle methods
25440         reached through a jump.
25441
25442 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25443
25444         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25445         bit values to registers
25446
25447 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25448
25449         * mini.c (mono_compile_get_interface_var): share interface
25450         variables if possible.
25451
25452 2003-05-16  Martin Baulig  <martin@ximian.com>
25453
25454         * debug-mini.c (mono_init_debugger): New function to initialize
25455         the debugger.  This is not in the debugger since it needs to
25456         access some of mini's internals.
25457
25458 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25459
25460         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25461
25462 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25463
25464         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25465         for value type handling.
25466
25467 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25468
25469         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25470         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25471
25472 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25473
25474         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25475           the constructor through a proxy.
25476
25477 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25478
25479         * jit-icalls.c, inssel.brg: fixes to array element address
25480         calculations.
25481
25482 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25483
25484         * mini-x86.c (is_regsize_var): allocate pointer to registers
25485
25486 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25487
25488         * driver.c: fixed typo, added intrins to the set of optimizations
25489         tested with regressions.
25490
25491 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25492
25493         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25494         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25495         test case.
25496
25497 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25498
25499         * inssel.brg: remove some common pop instructions without side effects
25500
25501 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25502
25503         * inssel-x86.brg: fixed thinko in int to double conversions.
25504
25505 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25506
25507         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25508
25509 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25510
25511         * inssel-long32.brg: two more missing instructions.
25512
25513 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25514
25515         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25516         if not already set.
25517
25518 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25519
25520         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25521         correctly.
25522
25523         * basic-float.cs: Added tests for negative zero.
25524
25525 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25526
25527         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25528         a couple of missing operations for long casts, with test cases.
25529
25530 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25531
25532         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25533
25534 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25535
25536         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25537         code size estimation.
25538
25539 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25540
25541         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25542         abstract methods (fix bug 42542)
25543
25544         * aot.c: add ability to handle array types
25545         
25546 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25547
25548         * mini.c: Call the _specific versions of the object allocation
25549         functions if possible.
25550
25551 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25552
25553         * driver.c: call setlocale ().
25554
25555 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25556
25557         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25558         windows build.
25559
25560 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25561
25562         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25563
25564         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25565         wrappers (fix bug 42122)
25566
25567 2003-05-04  Martin Baulig  <martin@ximian.com>
25568
25569         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25570
25571         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25572         s/mini_set_defaults/mono_set_defaults/g.
25573
25574 2003-05-04  Martin Baulig  <martin@ximian.com>
25575
25576         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25577
25578 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25579
25580         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25581         (reported by Don Roberts).
25582
25583 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25584
25585         * mini.c: temporarily work around two bugs for this release.
25586
25587 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25588
25589         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25590         that contains -export-dynamic and it makes using the ld script
25591         useless.
25592         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25593
25594 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25595
25596         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25597         specific cpu.
25598
25599 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25600
25601         * mini.c: make sure leave calls all the needed finally blocks,
25602         even when the target jumps out of multiple exception clauses.
25603
25604 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25605
25606         * ldscript, Makefile.am: add linker script to reduce the number of
25607         exported symbols (should also fix the issues with libwine defining
25608         some of the same symbols in io-layer).
25609
25610 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25611
25612         * driver.c (mini_main): Avoid assertion when no file name is given on 
25613         the command line.
25614
25615 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25616
25617         * driver.c: added --version/-V command line option.
25618         Added the inline optimization in the regression tests.
25619
25620 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25621
25622         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25623         to the type in the method signature (fixes bug#42134).
25624
25625 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25626
25627         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25628
25629 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25630
25631         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25632
25633 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25634
25635         * driver.c: fixed bug #42100.
25636
25637 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25638
25639         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25640
25641 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25642
25643         * mini.c: moved most of the code required to do inlining to its own
25644         function so it can be reused. Inline also ctors if appropriate.
25645
25646 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25647
25648         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25649         the runtime can call mono API functions.
25650
25651 2003-04-27  Martin Baulig  <martin@ximian.com>
25652
25653         * debug-mini.c (mono_debug_init_method): Added
25654         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25655         send a notification to the debugger.
25656
25657         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25658         running in the Mono Debugger, just pass the breakpoint number to
25659         mono_debug_init_method().
25660
25661         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25662
25663 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25664
25665         * mini.c: allow some more unsafe compares.
25666
25667 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25668
25669         * mini-x86.c, Makefile.am: make distcheck works (partially from
25670         a patch by Richard Lee <r.h.lee@attbi.com>).
25671         * regset.c, regset.h: removed, they are unused.
25672
25673 2003-04-25  Dick Porter  <dick@ximian.com>
25674
25675         * driver.c: Usage reports the name as 'mono' not 'mini'
25676         * exceptions-x86.c: Build and run on freebsd
25677
25678 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25679
25680         * Makefile.am: install the program with the 'mono' name and
25681         the library as libmono instead of mini and libmini.
25682
25683 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25684
25685         * driver.c: provide the APIs for the embedding interface of the old jit.
25686
25687 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25688
25689         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25690
25691 2003-04-23  Martin Baulig  <martin@ximian.com>
25692
25693         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25694
25695         * driver.c: Added `--debug' command line argument to enable
25696         debugging support.
25697
25698 2003-04-23  Martin Baulig  <martin@ximian.com>
25699
25700         * debug.[ch]: Removed.  The code is now in
25701         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25702
25703         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25704         last six months.
25705
25706 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25707
25708         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25709
25710 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25711
25712         * mini.c:
25713         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25714         mono_domain_finalize.
25715         (mini_method_compile): use mono_method_profile* if the the option is
25716         enabled.
25717
25718 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25719
25720         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25721         methods with their wrapper.
25722
25723         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25724         methods with their wrapper.
25725
25726         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25727         their wrapper.
25728
25729         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25730         wrapper.
25731
25732         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25733         methods.
25734
25735 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25736
25737         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25738
25739 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25740
25741         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25742         of the mempool. This is slightly faster and uses less memory
25743
25744 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * mini.c: avoid O(n) allocation for variables.
25747
25748 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25749
25750         * mini.c: handle items on the stack after inlining methods.
25751
25752 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25753
25754         * mini.c: make the method->opcode optimization dependent
25755         on MONO_OPT_INSTRINS and do it lazily.
25756
25757 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25758
25759         * driver.c: print overall results at the end of regression run.
25760
25761 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25762
25763         * inssel.brg: don't overwrite symbolic registers.
25764
25765 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25766
25767         * inssel-x86.brg: fix conversion from long to float.
25768
25769 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25770
25771         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25772
25773 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25774
25775         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25776
25777         * driver.c: Added --print-vtable option as in the old JIT.
25778
25779 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25780
25781         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25782
25783 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25784
25785         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25786
25787 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25788
25789         * mini.c regalloc.c regalloc.h: Fix memory leak.
25790
25791 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25792
25793         * aot.c (mono_aot_get_method): register all used strings
25794
25795 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25796
25797         * mini.c: always intern strings references with ldstr at compile time.
25798
25799 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25800
25801         * Makefile.am: add BUILT_SOURCES.
25802
25803 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25804
25805         * driver.c: give a better error message when the assembly to execute
25806         doesn't have an entry point.
25807
25808 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25809
25810         * Makefile.am: added hack for automake
25811
25812         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25813         correct sematics.
25814
25815         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25816
25817 22003-04-07  Martin Baulig  <martin@ximian.com>
25818
25819         * Makefile.am: Added Makefile.am.
25820
25821         * debugger-main.c: Removed, this is now in the debugger where it
25822         belongs.
25823
25824         * mini.pc.in: Call this package `mini' for the moment.
25825
25826
25827
25828
25829
25830
25831
25832
25833
25834
25835
25836
25837
25838
25839