2010-07-04 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-07-04  Zoltan Varga  <vargaz@gmail.com>
2
3         * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
4
5         * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
6         lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
7
8         * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
9
10         * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
11
12         * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
13
14         * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
15         without IMT_REG defined (ARM).
16
17         * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
18         the trampolines.
19
20 2010-07-03  Zoltan Varga  <vargaz@gmail.com>
21
22         * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
23
24 2010-07-02  Zoltan Varga  <vargaz@gmail.com>
25
26         * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
27         definitions to match their declarations and vice-versa.
28
29 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
30
31         * Makefile.am (common_sources): Add mini-llvm.h.
32
33         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
34
35 2010-06-30  Zoltan Varga  <vargaz@gmail.com>
36
37         * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
38         compiling.
39
40 Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
41
42         * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
43         implemt the option of loading the llvm backend from a module so
44         that we can have a single binary and the bloat from llvm is
45         only experienced when it is actually loaded.
46
47 Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
48
49         * mini-llvm.c: remove direct access to mono_defaults.
50
51 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
52
53         * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
54         a no-op.
55
56         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
57
58         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
59         is now mono_arch_nullify_class_init_trampoline ().
60         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
61         opcodes, they are no longer needed.
62
63         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
64         now mono_arch_nullify_class_init_trampoline ().
65         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
66         opcodes, they are no longer needed.
67
68         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
69         vtable on platforms which support it.
70
71         * driver.c: Print the full LLVM version we are compiled against in --version.
72
73         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
74         a bit better. Decode nesting information to fix eh support for llvm+aot.
75
76         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
77         methods.
78
79         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
80
81         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
82         is always passed as the first argument, before the vtype ret arg. This simplifies
83         get_this_arg_reg () and LLVM integration.
84
85 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
86
87         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
88         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
89         most of the vcall specific code to mono_vcall_trampoline () from
90         common_call_trampoline ().
91
92 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
93
94         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
95         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
96         if the callsite is patched.
97
98         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
99         the llvm branch.
100
101         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
102         the trampoline in the xdebug info.
103
104         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
105         as well.
106
107 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
108
109         * mini-llvm.c: Fix a few problems exposed by make check.
110
111 2010-06-25  Mark Probst  <mark.probst@gmail.com>
112
113         * mini-trampolines.c (common_call_trampoline): An ugly hack to
114         work around a potentially very hard to fix problem with inflating
115         generic methods.
116
117 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
118
119         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
120         problem has been fixes.
121
122 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
123
124         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
125
126         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
127         It might be be better to define a MonoGCJitOptions structure later and have the
128         GC return that.
129
130         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
131
132         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
133
134         * debugger-agent.c (get_objref): Implement support for sgen.
135
136         * driver.c: Remove the unused gc_wrapper.h include.
137
138         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
139         implementation.
140
141 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
142
143         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
144
145         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
146         in MonoCompile.
147
148         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
149         instead.
150
151 2010-06-23  Miguel de Icaza  <miguel@novell.com>
152
153         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
154         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
155
156         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
157         it only for Boehm diagnostics.
158
159         * Makefile.am: Make the file a bit more consistent.
160
161         * debug-debugger.c: Wrap the entire file with an #ifdef
162         MONO_DEBUGGER_SUPPORTED to simplify the build.
163
164         * Makefile.am: Fix the opcodes build issue by including the
165         source, not by including the .lo file directly
166
167         Always bring the MDB sources into the build, to drop the
168         dependency on the AM_CONDITIONAL from configure.in as the hard
169         debugger supports Boehm, but not Sgen, this simplifies the build. 
170
171         * Renamed the *.s files into *.S
172
173 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
174
175         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
176         wb for now on 64bits systems while issues with valuetype returns
177         are not fixed.
178
179 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
180
181         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
182         passes by calling createStandardFunctionPasses ().
183
184 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
185
186         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
187
188 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
189
190         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
191         MONO_INST_FAULT.
192
193         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
194         allow better optimization if the OP_LDADDR which caused the flag to be set was
195         optimized away.
196
197         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
198
199         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
200         the type token.
201
202         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
203
204         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
205
206 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
207
208         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
209         to handle the code sequence generated for non-near calls. Fixes #616056.
210
211 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
212
213         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
214
215         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
216
217         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
218         nesting clause too.
219         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
220         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
221         trampoline which saves the context, so changes made to callee saved registers in
222         finally clauses are visible to a nesting catch clause.
223
224         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
225
226         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
227         in LLVM compiled code.
228         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
229         the finally handler has ran.
230
231         * mini.h (ResumeState): New structure containing information required to resume
232         exception handling after executing LLVM compiled finally clauses.
233
234         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
235         bit, by passing all the registers as one argument.
236
237 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
238
239         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
240         to avoid an assert.
241
242 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
243
244         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
245
246         * aot-compiler.c aot-runtime.c: Fix LLVM support.
247
248         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
249         pad, branch to a new bblock instead.
250
251         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
252         orig_method.
253
254         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
255
256         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
257
258 2010-06-17  Geoff Norton  <gnorton@novell.com>
259
260         * mini-arm.h:
261         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
262         can be used by sgen.
263
264 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
265
266         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
267
268         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
269         fails.
270
271         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
272         the ip done by throw_exception (), it is not needed for corlib exceptions.
273
274 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
277         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
278         of size > 5 words. This support fast barriers for value types up to
279         256/512 bytes which     beyond that the copying itself is the major issue.
280
281         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
282         for gsharing, so use it.
283
284         This eliminate all calls to mono_value_copy from managed code in
285         gmcs, fsharp and ipy.
286
287         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
288
289         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
290         performance kept
291
292         * mini.c (mini_init): Register new icall.
293
294 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
295
296         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
297         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
298
299 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
300
301         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
302         value types as the overhead is huge. Manually expand it up to 5 words to
303         avoid code bloat.
304
305         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
306         is an exception that performance is dominated by mono_value_copy.
307
308         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
309
310 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
311
312         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
313         trampolines on x86, since those have their own cconv.
314
315         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
316         exception trampolines.
317
318         * tramp-x86.c: Add xdebug info for a few trampolines.
319
320         * mini-llvm.c: Set the name of the arguments.
321
322         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
323         using a block address if using the LLVM mono branch.
324
325         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
326         trampolines.
327
328 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
329
330         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
331
332         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
333
334         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
335
336         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
337
338         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
339         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
340         to identify the vtable slot address plus the method which needs to be compiled.
341
342         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
343         using llvm.
344
345         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
346         'this' is always passed as the first argument, before the vtype ret arg. This
347         simplifies get_this_arg_reg () and LLVM integration.
348
349         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
350         the latest changes.
351
352         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
353         these trampolines.
354
355         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
356
357         * mini-llvm.c: Fix compilation with llvm 2.6.
358
359         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
360
361         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
362         defined.
363
364         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
365         is always passed as the first argument, before the vtype ret arg. This simplifies
366         get_this_arg_reg () and LLVM integration.
367
368 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
369
370         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
371
372         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
373         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
374         translate into much nicer code.
375
376 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
377
378         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
379         parameter index information. Use this to simplify a lot of code.
380
381         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
382
383 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
384
385         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
386         to fix infinite generic recursion. Fixes #612702.
387
388 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
389
390         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
391         imt trampoline per imt slot when using LLVM.
392
393 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
394
395         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
396
397 2010-06-09  Levi Bard  <levi@unity3d.com>
398
399         * debugger-agent.c: Clear unloaded types on appdomain unload.
400
401 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
402
403         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
404         Fixes #612206.
405
406         * exceptions.cs: Add a test.
407
408 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
409
410         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
411
412         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
413
414         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
415         so it doesn't have to do it.
416
417         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
418         process does not mix with ours.
419
420         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
421         ones.
422
423         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
424         loads/stores which can throw exceptions inside clauses.
425
426 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
427
428         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
429         one ENDFINALLY.
430
431         * mini.c (mini_init): Register mono_resume_unwind as an icall.
432
433 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
434
435         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
436
437         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
438         locals.
439
440 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
441
442         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
443         appdomain.
444
445 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
446
447         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
448         Use a separate generic class init trampoline for llvm, since it needs a different
449         signature.
450
451         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
452         includes the location of this/rgctx.
453
454         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
455         branch.
456
457 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
458
459         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
460
461         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
462         clause.
463
464 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
465
466         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
467         says so.
468
469         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
470
471         * aot-compiler.c (patch_to_string): New debugging helper function.
472
473 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
474
475         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
476         trampoline.
477
478         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
479
480         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
481
482         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
483
484         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
485         clauses.
486
487         * mini.c (create_jit_info): Print EH clause info for LLVM too.
488
489 2010-05-28  Mark Probst  <mark.probst@gmail.com>
490
491         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
492         cpobj with reference types.
493
494 2010-05-28  Mark Probst  <mark.probst@gmail.com>
495
496         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
497         write barrier for reference types.
498
499 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
500
501         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
502         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
503
504 2010-05-31  Martin Baulig  <martin@ximian.com>
505
506         Fix #608271.
507
508         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
509         clear_breakpoint() on all breakpoint events and remove them from the list.
510
511 2010-05-27  Martin Baulig  <martin@ximian.com>
512
513         Fix #605698.
514
515         * debugger-agent.c (method_commands, type_commands): Temporarily
516         set the appdomain while executing this method; do all metadata
517         calls in the debuggee's appdomain where user assemblies are loaded.
518
519 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
520
521         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
522
523 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
524
525         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
526
527 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
528
529         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
530         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
531         be referenced even after the header is freed.
532
533         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
534         section.
535
536 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
537
538 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
539
540         * genmdesc.c (main): Fixing the detection of the nacl switch.
541
542         Code is contributed under MIT/X11 license.
543
544 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
545
546         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
547
548         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
549
550         * mini.h (LLVM_CHECK_VERSION): New helper macro.
551
552 2010-05-25  Miguel de Icaza  <miguel@novell.com>
553
554         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
555         the Perl program
556
557         * genmdesc.c: Added support for nacl: key on the machine
558         description files to support the extra space required by Google
559         Native Client.
560
561 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
562
563         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
564
565 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
566
567         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
568         mono_runtime_class_init_full ().
569         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
570
571 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
572
573         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
574
575 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
576
577         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
578         two are not the same on ilp32.
579
580 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
581
582         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
583         added by mistake.
584
585         * mini-ppc.c: Fix the DISABLE_JIT build.
586
587 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
588
589         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
590         (make_writable): Remove this unused function.
591
592 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
593
594         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
595         structure. Make the labels to plt entries local symbols instead of assembler local
596         labels, since tha latter causes problems for the iphone linker.
597
598 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
599
600         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
601
602 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
603
604         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
605         (ppc_patch_full): Ditto.
606
607         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
608
609         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
610         if gshared is enabled, to avoid asserts in the trampoline code.
611
612         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
613         on ia64.
614
615 2010-05-15  Geoff Norton  <gnorton@novell.com>
616
617         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
618         xdebug mode.
619
620 2010-05-14  Geoff Norton  <gnorton@novell.com>
621
622         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
623         misaligned stack on darwin.
624
625 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
626
627         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
628         arm.
629
630 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
631
632         * xdebug.c: Fix ARM support.
633
634 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
635
636         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
637         and do most of the work on the normal stack.
638         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
639
640 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
641
642         * aot-compiler.c: Put non-code data into the .rodata section on linux.
643
644 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
645
646         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
647
648 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
649
650         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
651         and do most of the work on the normal stack.
652
653 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
654
655         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
656         and do most of the work on the normal stack even if sigaltstack is disabled.
657
658 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
659
660         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
661         UCONTEXT_REG_ constants are available on linux as well.
662         (mono_arch_monoctx_to_sigctx): Ditto.
663         (mono_arch_ip_from_context): Ditto.
664
665 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
666
667         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
668         other domains.
669
670 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
671
672         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
673         no longer needed.
674
675 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
676
677         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
678         if a breakpoint cannot be inserted.
679
680 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
681
682         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
683
684 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
685
686         * debugger-agent.c (frame_commands): Return an error instead of asserting if
687         no JIT info is found for the method.
688
689 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
690
691         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
692         in debug printf.
693
694 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
695
696         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
697         a list of arch specific trampolines.
698
699         * aot-compiler.c (emit_trampolines): Use it.
700
701 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
702
703         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
704         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
705         get rid of the _full from their name.
706
707 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
708
709         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
710         get_nullified_class_init_trampoline to remove some code duplication.
711
712 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
713
714         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
715         attach.
716
717 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
718
719         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
720
721         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
722
723         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
724         there is no need to jump through the first plt entry.
725
726         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
727
728         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
729         arch-specific function.
730         (mono_aot_get_plt_info_offset): Ditto.
731
732         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
733         mono_arch_init () to register jit icalls called from full-aot trampolines.
734         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
735         to mini-<ARCH>.c.
736
737         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
738         the specialized throw corlib exception trampoline, use a variant of the normal
739         trampoline along with a new C function which does the call to
740         mono_exception_from_token (), just like on x86.
741
742 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
745         Reorganize the full aot trampoline creation functions, instead of taking a bunch
746         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
747         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
748         creation functions on architectures which have the full-aot ones.
749
750 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
751
752         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
753
754 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
755
756         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
757         explicitly, this seems to be required by some gcc versions at -O2.
758
759         * mini-arm.c: Ditto.
760
761 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
762
763         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
764         has_target delegate invokes.
765
766 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
767
768         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
769         info fields.
770
771         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
772         add patches/unwind info arguments, move to mini.c.
773
774         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
775
776 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
777
778         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
779         command which returns full path names.
780
781 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
782
783         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
784         code_size output variable.
785
786         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
787         mono_get_lmf_addr.
788         
789 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
790
791         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
792         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
793         (mono_arch_cpu_enumerate_simd_versions): Ditto.
794
795 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
796
797         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
798         apple assembler.
799
800 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
801
802         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
803
804 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
805
806         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
807
808 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
809
810         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
811
812 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
813
814         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
815         line number support works with eglib.
816
817 2010-04-27  Miguel de Icaza  <miguel@novell.com>
818
819         * driver.c, mini.c: Since linking with LLVM makes the default Mono
820         dirty an extra 70kb pages on startup we are now going to choose a
821         different strategy: ship mono and mono-llvm binaries, with the
822         second being the one that links with LLVM and defaults to LLVM
823         being enabled.
824
825 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
826
827         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
828         Implement full-aot support on x86.
829
830         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
831         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
832         the first register returned by get_global_int_regs ().
833
834         * cpu-x86.md: Fix the length of insertx_u1_slow.
835
836         * iltests.il.in: Disable tail call tests when running with full-aot.
837
838 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
839
840         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
841
842 2010-04-24  Mark Probst  <mark.probst@gmail.com>
843
844         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
845         in the initializer, because it's non-constant.
846
847 2010-04-23  Miguel de Icaza  <miguel@novell.com>
848
849         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
850         of LLVM on by default.   Used for buildbots and other setups.
851
852 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
853
854         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
855
856 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
857
858         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
859         initonly static fields when using moving GC.
860
861         Contributed under MIT/X11 license.
862
863 2010-04-23  Geoff Norton  <gnorton@novell.com>
864
865         * mini-amd64.h: Darwin x86_64 support.
866
867 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
868
869         * exceptions-arm.c: Remove platform checks in favor of configure checks.
870
871 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
872
873         * exceptions-arm.c: Add Android support for sigcontext structure.
874
875 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
876
877         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
878         wrappers correctly now that their wrapper info is NULL.
879
880 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
881
882         * mini.c (mono_jit_compile_method_inner): Avoid calling
883         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
884
885 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
886
887         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
888         so the latter can be #ifndef DISABLE_JIT-ed.
889
890         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
891
892 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
893
894         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
895
896 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
897
898         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
899         stack.
900
901 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
902
903         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
904         calling mono_class_num_methods (). Fixes #592244.
905
906 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
909
910         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
911
912 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
913
914         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
915         version.
916         * (handle_alloc): Ditto.
917         (mono_method_to_ir): Remove the constrained call restriction added by a previous
918         change, its not needed anymore.
919
920 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
921
922         * mini-posix.c (sigusr1_signal_handler): Fix build on
923         non x86/amd64 systems.
924
925 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
926
927         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
928         calls where the constrained class needs a context. Fixes #595863.
929
930         * iltests.il.in: Add a test.
931
932 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
935         2.6/SVN seems to have broken support for them.
936
937 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini-llvm.c: Fix support for LLVM 2.6.
940
941 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
942
943         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
944         MonoInternalThread belonging to the thread.
945
946 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
947
948         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
949         unsafe optimization that will remove bound checks.
950
951 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
952
953         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
954         CompareExchange not to be inlined for I8.
955
956         Contributed under MIT/X11 license.
957
958 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
959
960         * array.cs: Add tests for cast between primitive array types.
961
962 2010-04-07 Andreia Gaita  <avidigal@novell.com>
963
964         * Makefile.am: create a convenience library for moon to link with
965
966 2010-04-07 Paolo Molaro <lupus@ximian.com>
967
968         * method-to-ir.c: optimize array accesses from generic interfaces.
969
970 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
971
972         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
973
974 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
975
976         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
977         of marshalbyref classes.
978
979         Fixes #515884.
980
981 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
982
983         * aot-compiler.c (emit_exception_debug_info): Encode try holes
984         information.
985
986         * aot-runtime.c (decode_exception_debug_info): Decode try holes
987         information.
988
989         * mini.h: Increase AOT version.
990
991 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
992
993         * mini-x86.h: Only enable soft debugger when using sigaction or on
994         Windows. Fixes build on Haiku (lacks siginfo_t).
995
996         Code is contributed under MIT/X11 license.
997
998 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
999
1000         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
1001         BeOS-style signal handlers.
1002
1003         Code is contributed under MIT/X11 license.
1004         
1005 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
1008
1009 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
1010
1011         * mini-exceptions.c: Fix win32 build.
1012
1013 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1014
1015         * mini.c, driver.c: Call mono_gc_base_init() before
1016         mono_debug_init().
1017
1018 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1019
1020         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
1021         call_method]): Delegate the actual work in security-core-clr.c
1022         to ease code sharing.
1023
1024 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
1027         float conv.ovf.un opcodes are encountered, instead of asserting later.
1028         Fixes #566296.
1029
1030 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
1033
1034         * iltests.il.in: Add a test.
1035
1036 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
1039         large. Fixes #567040.
1040
1041         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
1042
1043 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1044
1045         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
1046         #592711.
1047
1048 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
1049
1050         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
1051         mono_create_handler_block_trampoline with the proper #ifdef so that it
1052         compiles on amd64.
1053
1054 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1057         allows to select if it's new or old context that is passed to 
1058         the callback.
1059
1060         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1061         case when executing a guarded handler from the EH machinery.
1062
1063         * mini-exceptions.c (mono_install_handler_block_guard): New function
1064         responsible for checking for handler blocks, installing the guard and
1065         clearing abort state.
1066
1067         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1068         to check for handler blocks and skip interruption logic if one was found.
1069
1070         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1071         by the handler block guard trampoline. Resumes interruption by raising the
1072         pending ThreadAbortException.
1073
1074         * mini.c (create_jit_info): Calculate the end address of a finally block.
1075
1076         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1077         of a finally block to a specified address and return the old one.
1078
1079         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1080         trampoline patches the original return address and calls the trampoline function.
1081
1082 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1085
1086         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1087         does the patching if the callee is in the same domain.
1088
1089         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1090         of mono_arch_patch_plt_entry ().
1091
1092 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1093
1094         * mini.c (create_jit_info): Fix try block hole length encoding.
1095
1096 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1097
1098         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1099         duplicate information and print offsets instead of absolute addresses.
1100
1101 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1102
1103         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1104         event is sent. Fixes #591733.
1105
1106 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1109         OpenBSD.
1110
1111 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1114         thread_to_tls hash table.
1115
1116         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1117         section. Fixes #591000.
1118
1119 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1120
1121         * Makefile.am (version.h): Check for pure .git directory only,
1122         fixes SVN revision when using git without git-svn.
1123
1124         Contributed under MIT/X11 license.
1125
1126 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1129
1130 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * basic-simd.cs: Test for vector x scalar binary operators.
1133
1134 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1135
1136         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1137         intrinsics with expanded scalar arguments.
1138
1139 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1142         don't have an exception class, so don't decode it. This would crash
1143         with filter clauses.
1144
1145 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1146
1147         Make sure that trunk builds with DISABLE_JIT, an update to the
1148         PlayStation 3 port.
1149         
1150         * mini.c (mini_get_shared_method): this code seems to be necessary
1151         regardless of whether DISABLE_JIT has been defined.
1152
1153         (mono_jit_compile_method_inner): it seems that this method is
1154         required even in full AOT mode, so ifdef out only the pieces that
1155         try to genrate code (the body of code that applies patches to the
1156         code).  
1157
1158         (mini_method_compile): do not compile when using DISABLE_JIT.
1159
1160         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1161         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1162         compile when DISABLE_JIT is set.
1163
1164 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1165
1166         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1167         arch really supports it.
1168
1169 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1170
1171         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1172
1173 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1174
1175         * exceptions-s390x.c: Add support for
1176         mono_arch_get_throw_corlib_exception and fix throw by name.
1177
1178         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1179         logic (especially for varargs); Correct localloc sizing; Add
1180         mono_arch_get_this_arg_from_call and
1181         mono_arch_get_this_arg_from_call.
1182
1183         * mini-s390x.h: Add support for facility list extraction;
1184         Correct/update MONO_ARCH_xxx settings.
1185
1186         * mini-s390.c: Minor corrections to instruction output for
1187         varargs. No IMT implementation - I think it's time to deprecate
1188         s390 and just leave s390x.
1189
1190         * tramp-s390x.c: Correct creation of trampoline instruction
1191
1192
1193         * cpu-s390x.md: Update some instruction lengths
1194
1195 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1198         can be hit with partial sharing.
1199
1200         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1201         in non-shared classes correctly.
1202         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1203         Turn on partial sharing.
1204
1205 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1208         by mistake.
1209
1210 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1213         mono_method_signature ().
1214
1215         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1216
1217         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1218         error checking, so later calls do not need error checking.
1219
1220 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1223
1224         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1225
1226 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1227
1228         * mini-exceptions.c (mono_handle_exception_internal): Don't
1229         check try_end for archs different than s390. 
1230
1231         * mini.c (create_jit_info): Don't crash if the finallt block is the
1232         last one.
1233
1234 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1235
1236         * driver.c (mono_main): Don't free global codeman under linux since
1237         glic now peeks at code on stack for more archs than just amd64.
1238
1239 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1240
1241         * mini.c, method-to-ir.c: changes to support compressed interface
1242         bitmaps.
1243
1244 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1245
1246         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1247         Use sigaction on OpenBSD too.
1248
1249 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1252
1253 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1254
1255         * debugger-agent.c: #include sys/select.h for fd_set.
1256
1257         Code is contributed under MIT/X11 license.
1258
1259 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1262         (openbsd+amd64 ?).
1263
1264 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1267         some large methods with lots of exception handlers. Fixes #440924.
1268
1269 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1270
1271         * method-to-ir.c: remove code duplication for interface checks.
1272
1273 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1276         (assembly_unload): Clear all event requests referencing the to-be unloaded
1277         assembly.
1278
1279
1280 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1281
1282         * mini.h, mini-exceptions.c: restore the state of the stack
1283         guard page permissions.
1284
1285 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1288         call site patching code, it doesn't appear to be needed.
1289
1290 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1293         sharing generic methods whose type arguments are a mix of reference and
1294         non-reference types. Not yet turned on.
1295
1296         * mini.c (mini_get_shared_method): New helper function to return
1297         the method which will be compiled/registered in the JIT tables when doing
1298         generic sharing.
1299         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1300         use mini_get_shared_method ().
1301
1302         * mini.c (mini_method_compile): Register the same method which is compiled when
1303         doing generic sharing.
1304
1305         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1306
1307         * generics.cs: Add partial sharing tests.
1308
1309 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1310
1311         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1312                    Add an enum value that or's all possable values together. Add an enum value
1313                    that marks the end of the used bit indexes.
1314
1315         * mini-amd64.c : Make changes to match the changes in mini.h 
1316
1317         * mini-x86.c : Make changes to match the changes in mini.h
1318
1319         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1320                    simd_version to support more simd versions. Changed the name of
1321                    simd_version to simd_version_flags to make it more intuitive that
1322                    it now contains bit flags. Reordered the *_intrinsics arrays to
1323                    match the changes above. Changed emit_intrinsics() to use the new
1324                    setup mentioned above.
1325
1326         Code is contributed under MIT/X11 license.
1327
1328 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1331         remaining archs. Alpha and hppa maintainers, please stand up.
1332
1333 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1336         is needed even when fail_tramp!=NULL.
1337
1338 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1339
1340         * debugger-agent.c (insert_breakpoint): Write a log message.
1341
1342 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1343
1344         * iltests.il.in: Add a few tests for LEAVE going over multiple
1345         finally clauses.
1346
1347 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1348
1349          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1350
1351 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1352
1353         * mini.h (MonoBasicBlock): Add native_length field.
1354         * mini.h (MonoCompile): Add try_block_holes field.
1355         * mini.h (MonoInst): Add exception_clause pointer to
1356         the data union.
1357
1358         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1359         * mini.c (mono_cfg_add_try_hole): New function to register possible
1360         holes in try blocks.
1361         * mini.c (create_jit_info): Fill in the holes information.
1362
1363         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1364         by a try block.
1365
1366         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1367
1368 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1369
1370         * jit-icalls.c: adjusted for the array API changes.
1371
1372 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1375
1376 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1379         the 'pending' flag. This fixes support for appdomains too.
1380
1381
1382 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1383
1384         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1385
1386 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1389         when using LLVM, LLVM generates it itself when needed.
1390
1391         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1392
1393         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1394         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1395         OP_ANDNPS/OP_ANDNPD.
1396
1397 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1400         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1401         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1402
1403 2010-03-11  Martin Baulig  <martin@ximian.com>
1404
1405         * debugger-agent.c (type_commands): Add NULL check to
1406         `CMD_TYPE_GET_SOURCE_FILES'.
1407
1408 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1411
1412 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1415         #586664.
1416
1417         * iltests.il.in: Add a test.
1418
1419 2010-03-05  Martin Baulig  <martin@ximian.com>
1420
1421         Add support for aborting invocations.
1422
1423         * debugger-agent.c
1424         (InvokeData): Added `InvokeData *last_invoke'.
1425         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1426         added a new `invoke' field to keep the `InvokeData *' throughout
1427         the invocation.
1428         (ErrorCode): Added `ERR_NO_INVOCATION'.
1429         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1430         (mono_debugger_agent_handle_exception): Don't report any exception
1431         if an abort was requested.
1432         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1433         a thread abort if necessary.
1434         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1435
1436 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1439         so we can release the whole list and not just the first one. Free
1440         it in more places as well.
1441
1442 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1443
1444         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1445
1446 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1447
1448         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1449
1450 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1451
1452         * driver.c: report also other misc build options.
1453
1454 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1455
1456         * method-to-ir.c: Generate better code for the NewObject
1457         intrinsic.
1458         
1459 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1462         is disabled. Fixes #582322.
1463
1464         * iltests.il.in: Add a test.
1465
1466 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1469         the handling of obj->synchronization == null and owner != current thread to
1470         mono_monitor_exit ().
1471
1472         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1473
1474
1475 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1476
1477         * mini.c: change the way emulated opcode info is stored and save about
1478         4 KB of runtime memory.
1479
1480 2010-03-04  David S. Miller  <davem@davemloft.net>
1481
1482        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1483        that don't provide the siginfo in the second signal handler argument
1484        are buggy, and this has been fixed for years.
1485        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1486        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1487
1488 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * aot-runtime.c (find_symbol): Fix a leak.
1491         (decode_patch): Ditto.
1492
1493 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1496
1497 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1500
1501 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1502
1503         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1504
1505 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1508         to check for errors, it's enough to create the metadata open.
1509
1510         Fixes #562150
1511
1512 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1513
1514         * trace.c|h:
1515         * mini-exceptions.c: Add support for printing stack traces when handling
1516         exceptions, and when printing exceptions thrown while tracing also print
1517         the exception message.
1518
1519 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1520
1521         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1522         since the exclude token is a valid string character.
1523
1524 2010-03-02  Levi Bard  <levi@unity3d.com>
1525
1526         * debugger-agent.c: Invalidate thread stacks on domain unload.
1527
1528 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1529
1530         * method-to-ir.c: Emit dummy_use for stored reference after write
1531         barriers to make sure the object is pinned if the GC interrupts
1532         before the write barrier is done.
1533
1534 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1537
1538 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * debugger-agent.c: Add a log message printing the protocol version.
1541
1542 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * debugger-agent.c: Add a new command to communicate the protocol version used
1545         by the client. This could be used to allow newer runtimes to communicate with
1546         older clients.
1547
1548 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1549
1550         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1551
1552 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1555         type.
1556
1557 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1558
1559         * mini-arm.c: make the arm cpu arch configurable with the
1560         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1561         Bug #584198.
1562
1563 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1564
1565         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1566         support for the perf tool on Linux.
1567
1568 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1569
1570         * method-to-ir.c: make string.InsertenalSetChar() specialization
1571         effective.
1572
1573 2010-03-01  Robert Jordan  <robertj@gmx.net>
1574
1575         * Makefile.am: fix the non-static build.
1576
1577 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1580         here.
1581
1582 2010-02-26  Robert Jordan  <robertj@gmx.net>
1583
1584         * tasklets.c (continuation_store): Return from an error condition
1585         immediately.
1586
1587 2010-02-26  Martin Baulig  <martin@ximian.com>
1588
1589         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1590
1591         * debug-mini.c
1592         (MonoDebuggerThreadInfo): Added `internal_flags'.
1593         (MonoDebuggerInternalThreadFlags): New enum.
1594         (_mono_debugger_throw_exception): Don't signal the debugger if a
1595         type abort was requested.
1596         (_mono_debugger_unhandled_exception): Likewise.
1597         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1598         (mono_debugger_runtime_invoke): If the debugger requested a thread
1599         abort during the invocation, reset it here.
1600
1601 2010-02-26  Martin Baulig  <martin@ximian.com>
1602
1603         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1604         instead of `MonoThread *'.
1605
1606 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1609         code offsets table, as it is mostly sorted.
1610
1611 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1614         Fixes #582991.
1615
1616 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1619
1620 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1621
1622         * Makefile.am: build the new ABI version of the libmono library.
1623         * debugger-agent.c, mini.c: fix warnings with the new API.
1624         * jit.h: don't depend on glib.h being included.
1625
1626 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1627
1628         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1629
1630 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1633         ThreadStatic variables.
1634
1635 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1638         data is not freed yet. Fixes #582460.
1639
1640 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1641
1642         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1643         event requests. Bump protocol minor version.
1644
1645 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1648
1649 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1650
1651         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1652         #581950.
1653
1654         * iltests.il.in: Add a test.
1655
1656 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * mini.c (inline_method): Check for loader errors.
1659
1660 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1661
1662         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1663         instead of mono_method_get_header as it doesn't decode locals
1664         so the called method can have unresolved dependencies that will only
1665         be satisfied after the current method is JIT'd.
1666
1667         Fixes #550968.
1668
1669 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1670
1671         * basic.cs (test_0_div_opt): Speed this up a bit.
1672
1673 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1676
1677         * mini.c (mono_jit_create_remoting_trampoline): Call
1678         mono_create_specific_trampoline () instead of
1679         mono_arch_create_specific_trampoline ().
1680
1681         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1682
1683 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1686         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1687
1688         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1689
1690         * mini-amd64.c: Fix DISABLE_JIT support.
1691
1692 2010-02-20  Geoff Norton  <gnorton@novell.com>
1693
1694         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1695
1696 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1699         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1700         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1701         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1702         handle_exception.
1703
1704 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1707         edx/ecx too. This is needed to support OP_SEQ_POINT.
1708
1709 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1712
1713         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1714
1715 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1716
1717         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1718         LLVM+AOT+exceptions, not enabled yet.
1719
1720 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1723
1724 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1727         xdebug info for these.
1728
1729         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1730         in a few places.
1731
1732         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1733         not used yet.
1734
1735 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1738
1739 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1742         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1743
1744         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1745         for mtouch.
1746
1747 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1748
1749         * debugger-agent.c: handle incomplete reads and EINTR in
1750         recv()/send(). This could have been causing random
1751         disconnections.
1752
1753 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1756         points.
1757
1758         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1759         so they have small offsets. Fixes #566311.
1760
1761 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1762
1763         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1764
1765 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * mini-amd64.c: Remove the special casing of byref in a few places now that
1768         mini_type_get_underlying_type () handles it.
1769
1770         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1771         by returning native int. Fixes #577984.
1772
1773 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1776         a macro.
1777
1778         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1779         of putting the clause itself.
1780
1781         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1782
1783 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1786         might be unaligned.
1787
1788 2010-02-10  Geoff Norton  <gnorton@novell.com>
1789
1790         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1791
1792 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1795         llvm methods too.
1796
1797         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1798         it is not an LLVM generated symbol.
1799
1800         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1801
1802         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1803         implementation in gshared mode because it causes regressions.
1804
1805         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1806
1807         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1808         should be done by the caller.
1809
1810         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1811
1812         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1813
1814         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1815         since mono_jit_info_table_find () doesn't do it anymore.
1816
1817         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1818         instead of mono_jit_info_table_find ().
1819
1820 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1823
1824         * aot-compiler.c (encode_method_ref): Update after the removal of
1825         mono_gc_get_managed_allocator_type ().
1826
1827         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1828         Fixes #564538.
1829
1830 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1833         generic params as well.
1834         (handle_isinst): Ditto.
1835
1836         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1837         instead of always calling an icall.
1838
1839         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1840         computing the size of the got.
1841
1842         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1843         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1844         the assembly directive '.set' so it points to the first LLVM emitted method.
1845
1846 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1847
1848         * mini.c (mini_method_verify): Report the method which failed to verify.
1849
1850 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1851
1852         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1853         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1854         runtime MS verifier.
1855
1856 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1859         #561962.
1860
1861 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * mini-llvm.c: Init the jit module only when first JITting.
1864
1865         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1866
1867         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1868
1869         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1870         replaced with the real got.
1871
1872         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1873
1874         * image-writer.c: Reduce the amount of #ifdefs a bit.
1875
1876         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1877         llvm on darwin/arm.
1878
1879         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1880
1881         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1882         global.
1883
1884 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1887         (mono_llvm_emit_method): Fix unaligned stores too.
1888
1889         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1890         so async stack walks don't crash.
1891
1892 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1895         was not patched if the callee needed an rgctx trampoline.
1896
1897 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1900         vtable address in AOT code.
1901
1902 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1905         MonoInst's.
1906
1907 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1908
1909         * genmdesc.pl: remove dependency on external cpp.
1910
1911 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1914         using LLVM, its not needed, and abcrem can't handle it.
1915
1916 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1917
1918         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1919         it easier to group instructions and reduce duplication.
1920
1921 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * decompose.c: Move the array/soft float decompose routines here from
1924         method-to-ir.c.
1925
1926         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1927
1928 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1931         to tell LLVM that the got is constant, not used yet.
1932
1933         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1934
1935 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1936
1937         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1938         managed wrappers.
1939
1940 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * aot-compiler.c (add_wrappers): Commit the hack which generates
1943         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1944         custom attribute.
1945
1946 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1947
1948         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1949         a fault, only used by the LLVM backend.
1950
1951         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1952         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1953
1954         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1955         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1956
1957         * mini-llvm.c: Only generate volatile loads from load instructions which have
1958         the MONO_INST_FAULT flag set.
1959
1960 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1963         64 bit platforms.
1964
1965 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1966
1967         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1968         sequence points. Fixes #571236.
1969
1970 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1973         end of the appdomain unload process, after assemblies have been unloaded.
1974         Fixes #574842.
1975
1976 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1977
1978         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1979         works.
1980
1981         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1982         Fixes #573988.
1983
1984 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1987
1988 2010-01-26  Geoff Norton  <gnorton@novell.com>
1989
1990         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1991         with struct marshalability.
1992
1993 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1996         it supports class names as well.
1997
1998         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1999         needed by the GC map code.
2000
2001         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
2002         flags if needed.
2003
2004         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
2005         if cfg->init_ref_vars is set.
2006
2007         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
2008         cfg->disable_initlocals_op_refs is set.
2009
2010         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
2011         using liveness info if cfg->compute_precise_live_ranges is set.
2012
2013         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
2014         volatile variables correctly. Add comments about the live ranges. Not enabled
2015         yet.
2016
2017 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
2020         0x2a into them in method prologs.
2021
2022         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
2023
2024 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
2027         classes, since llvm is compiled with -fno-rtti.
2028
2029         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
2030
2031         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
2032         llvm does not require it.
2033
2034         * aot-runtime.c (load_method): Print the full name of the last aot method.
2035
2036 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
2039         thread has not fully started yet.
2040
2041 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2042
2043         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
2044
2045 2010-01-21  Miguel de Icaza  <miguel@novell.com>
2046
2047         * driver.c: Do not abort if LLVM is not supported, print a
2048         warning and add the information to the Mono JIT information.
2049
2050 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2053         using explicit null checks.
2054
2055 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2058         related code.
2059
2060         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2061         () in one place.
2062         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2063         its no longer needed.
2064
2065         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2066
2067         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2068         define for platforms still using it (s390). Get rid of the
2069         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2070
2071         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2072         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2073
2074         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2075         the caller pushed the arguments.
2076
2077         * mini-llvm.c: Enable throwing exceptions on x86.
2078
2079         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2080         "Thread (nil) may have been prematurely finalized" messages if this is called
2081         on a thread not registered with the runtime.
2082
2083         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2084
2085 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * jit-icalls.c (mono_array_new_3): New jit icall.
2088
2089         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2090
2091         * arrays.cs: Add a test for 3 dimensional arrays.
2092
2093 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2096         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2097         used.
2098
2099         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2100         thrown on x86.
2101
2102         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2103
2104         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2105
2106         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2107
2108 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2109
2110         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2111           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2112
2113         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2114
2115         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2116
2117         Code is contributed under MIT/X11 license.
2118
2119 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2122
2123         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2124
2125         * mini.c (mini_method_compile): Set the new flag when running under the
2126         debugger.
2127
2128 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2131         a ref/noref value + a global pin flag, so parts of stack frames can still be
2132         precisely marked even if they include stuff which needs pinning. Improve logging.
2133         Fix many bugs. Not enabled yet.
2134
2135         * gc-test.cs: Add a few tests.
2136
2137         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2138         the normal -v options. Avoid propagating liveness information through bblocks
2139         which end with a NOT_REACHED opcode.
2140
2141         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2142         after cfg has been freed.
2143
2144 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2145
2146         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2147         if a clause is skipped because it uses the exception object, since it could
2148         have caught the exception.
2149
2150         * exceptions.cs: Add a test.
2151
2152 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2153
2154        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2155
2156         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2157         ICollection<T> wrappers.
2158
2159 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2160
2161         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2162
2163 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2166         NOMAP32BIT or optimize_for_xen is set.
2167
2168 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2171         mono_metadata_str_hash () instead.
2172
2173 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2176         sizeof (void*).
2177
2178         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2179
2180 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2183         flag is set.
2184
2185         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2186         throwing code correctly.
2187
2188         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2189
2190 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2193         ftnptrs created by us, handle RGCTX_FETCH correctly.
2194         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2195
2196         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2197         ftnptr added by mono_aot_get_named_code ().
2198
2199 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * mini-arm.c: Fix a few LLVM problems.
2202
2203         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2204
2205 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2206
2207         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2208         AOT compiling.
2209
2210 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2211
2212         * jit.h, method-to-ir.c: added ability to set the policy for
2213         inserting breakpoints from the break IL instruction or the
2214         Debugger.Break () API call.
2215
2216 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2219         assemblies need to be eagerly loaded.
2220
2221 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2224
2225 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2228         an argument which matches any exception.
2229
2230 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2233         optimization if the called method is gshared and marshalbyref, since gshared
2234         methods can' have wrappers. Fixes #569390.
2235
2236         * generics.cs: Add a test.
2237
2238 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2241         callable from gdb.
2242
2243 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2246
2247 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2250         since it is not supported in win2000.
2251
2252 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2255         error if loading an assembly fails.
2256         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2257
2258         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2259         if exists.
2260
2261         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2262         compiled methods.
2263
2264         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2265
2266         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2267         is not supported yet.
2268
2269         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2270
2271 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2272
2273         * method-to-ir.c: All types with variant arguments must fallback to the
2274         slow path. This makes cast of variant delegates work.
2275
2276         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2277         argument that is set to TRUE is the returned vtable slot is for a variant
2278         interface. Changed a g_print + g_assert_not_reached to a g_error.
2279
2280         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2281         a similar fashion of generic virtual methods.
2282
2283 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2284
2285         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2286         when cfg is null.
2287
2288         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2289         method using a variance aware function.
2290
2291         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2292
2293 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2294
2295         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2296         do an icall for now.
2297
2298 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2301         If LLVM decides to set the code model to Large, reset it to Default.
2302
2303 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2306         stripped binaries as well.
2307
2308 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2309
2310         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2311         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2312
2313         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2314         reg.
2315
2316 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2319         separate function.
2320
2321         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2322         as the type info to llvm.eh.selector.
2323         (exception_cb): Use the type info for filling out some fields of
2324         MonoJitExceptionInfo like the flags and the exception class. This is needed
2325         because the LLVM produced exception handling clauses might not match the original
2326         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2327
2328         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2329         separate function. Add an extra argument which returns the type infos
2330         corresponding to the exception clauses.
2331
2332         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2333         exception handling clauses.
2334
2335 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2338         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2339         to fix an AOT case.
2340
2341 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2342
2343         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2344         internal assembly.
2345
2346 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2347
2348         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2349         llvm code.
2350
2351 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2352
2353         * mini.c (mini_method_compile): Verify the method before calling
2354         mono_compile_create_vars as this might crash since it uses method
2355         information.
2356
2357         Fixes #560196.
2358
2359 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2362         one case if AOTing, since the class might not be a concrete class.
2363
2364 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2367         functions which are now defined in mempool-internals.h.
2368
2369         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2370
2371         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2372
2373 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2374
2375         * mini.c:
2376         * method-to.ir.c:
2377         * mini-*.c: Properly handle generic enums.
2378
2379         Fixes #566294
2380
2381 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2384         in a few more places.
2385
2386 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2387
2388         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2389         nullable parameters. Fixes #567351.
2390
2391 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2392
2393         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2394
2395 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2398         mono_get_generic_context_from_code () call.
2399
2400         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2401
2402 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2405         needed.
2406
2407 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2408
2409         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2410         mono_method_get_signature returns NULL. Fix #567084
2411
2412 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2415         instead of once for each module.
2416
2417 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * debugger-agent.c (ss_start): Implement step over for the last sequence
2420         point in methods.
2421
2422         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2423         have the STEP_LOC flag set.
2424
2425         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2426         fails. Fixes #566689.
2427
2428 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2429
2430         * mini.c (mono_add_seq_point): New helper function.
2431         (mono_save_seq_point_info): New function to save sequence point info, extracted
2432         from mini_method_compile ().
2433
2434         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2435
2436         * mini.h (MonoSeqPointInfo): New structure containing information about
2437         the sequence points of a JITted method.
2438         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2439         'bucket' field.
2440
2441         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2442         point information is stored, use a MonoSeqPointInfo structure instead of a
2443         GPtrArray. For each seq point, compute a list of successor seq points.
2444
2445         * debugger-agent.c: Use the successor list to implement step-over more
2446         efficiently: instead of single stepping until a different line/IL offset is
2447         reached, place breakpoints into all successor seq points.
2448
2449         * mini.h: Bump AOT file format version.
2450
2451 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2452
2453         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2454
2455         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2456
2457 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2460         build.
2461
2462 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2463
2464         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2465         alloca as g_malloc is not signal safe.
2466
2467 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2470         VALGRIND_DISCARD_TRANSLATIONS.
2471
2472         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2473         checks, they are no longer needed.
2474
2475         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2476         a function into a sigctx which can handle function pointers.
2477
2478         * mini-ppc.c: Implement soft debugger support on ppc64.
2479
2480         * mini-ppc.c: Implement soft debugger support.
2481
2482 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2485
2486 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2487
2488         * mini.c (mono_get_runtime_build_info): include Mono version in
2489         the returned value.
2490
2491         * driver.c (mono_main): VERSION is now included in the string
2492         returned from mono_get_runtime_build_info()
2493
2494 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2497         signatures. Fixes #565143.
2498
2499         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2500
2501 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2502
2503         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2504
2505 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2506
2507         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2508         making max stack 10x smaller.
2509
2510 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2513
2514 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2517
2518 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2521         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2522
2523         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2524
2525         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2526
2527         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2528
2529         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2530         the compilation.
2531
2532 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2533
2534         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2535         raise an invalid program exception.   
2536
2537         For other opcodes that we might not handle use a g_warning and
2538         raise the exception.   Beats termination.
2539
2540         Fixes #561724
2541
2542 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2545
2546         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2547         by merging the LLVM and !MAP_32BIT cases.
2548
2549 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2550
2551         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2552         sigctx being passed in, as we have no CONTEXT available in the APC.
2553
2554         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2555         for now.
2556
2557         Code contributed under MIT/X11 license.
2558
2559 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2562         in the LLVM backend on AMD64.
2563
2564         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2565         FDE.
2566
2567         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2568
2569         * mini-llvm.c: Export mono_personality for AOT.
2570
2571         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2572
2573         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2574         implicit exception can occur.
2575
2576         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2577         OP_IMPLICIT_EXCEPTION instruction.
2578
2579         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2580
2581         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2582
2583         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2584         inside a protected block.
2585
2586         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2587         trampolines doesn't include the argument.
2588
2589         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2590         trampolines on amd64.
2591
2592         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2593         of RDI.
2594
2595         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2596         disabled for methods with clauses.
2597
2598         * mini-llvm.c: Enable support for catch clauses.
2599
2600         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2601         end of an LLVM compiled finally clause.
2602         (mono_handle_exception_internal): Save the exception handling state in TLS
2603         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2604         resume unwinding from that point.
2605
2606         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2607         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2608         to obtain the addresses of the exception handling regions.
2609
2610         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2611         finally clauses are supported.
2612
2613         * mini.c (mini_method_compile): Add support for LLVM code with exception
2614         handlers.
2615
2616 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2619         proper size.
2620
2621 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2624         as a primitive type.
2625
2626 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2629         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2630         #564000.
2631
2632 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2633
2634         * method-to-ir.c (mini_redirect_call): do not redirect the
2635         InternalAllocateStr internal call if string profiling is enabled.
2636
2637 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2640         generic methods.
2641
2642         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2643         unwind.h header file.
2644
2645         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2646         newer valgrind versions seems to handle this fine.
2647
2648 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2651         on the debugger thread.
2652
2653 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2656
2657         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2658
2659         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2660
2661         * cpu-<ARCH>.md: Make call_handler clob:c.
2662
2663         * mini.c: Reenable SSA for methods with clauses.
2664
2665         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2666         as it causes failures on x86.
2667
2668 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2669
2670         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2671         returns NULL (e.g. a bad assembly).
2672
2673 2009-12-08  Geoff Norton  <gnorton@novell.com>
2674
2675         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2676         stepping out into native code.  There were issues with nested invokes
2677         like .cctors.
2678
2679 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * mini.c (mini_method_compile): Do the disable_llvm checks early
2682         and avoid the LLVM compile pass if the checks fail.
2683
2684         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2685
2686         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2687         LLVM optimizations don't try to remove them.
2688
2689         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2690         different file so the original remains.
2691
2692 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2693
2694         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2695
2696         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2697
2698         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2699         support for non-inline unwind descriptors.
2700
2701 2009-12-07  Geoff Norton  <gnorton@novell.com>
2702
2703         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2704         the interrupt_count slightly differently.  Native threads were never
2705         marked as resumed.
2706
2707 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2710         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2711         yet generate this info.
2712
2713         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2714
2715         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2716         client can distinguish between intptrs and longs.
2717
2718 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2721         blob.
2722
2723         * aot-runtime.c (load_function): Update after the change above.
2724
2725         * mini.h: Bump AOT file format version.
2726
2727         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2728         if the delegate class is dynamic.
2729
2730         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2731         in gshared code too using the new rgctx info type
2732         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2733
2734 2009-12-04  Geoff Norton  <gnorton@novell.com>
2735
2736         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2737         we need to track the original suspend count so the thread properly
2738         wakes up in resume_thread.
2739
2740 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2743         code.
2744
2745         * generics.cs: Add a test.
2746
2747         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2748         is 0. Simplify a lot of code using this.
2749
2750         * mini-trampolines.c (mono_delegate_trampoline): Call
2751         mono_create_static_rgctx_trampoline () before saving the final address in
2752         delegate->method_code, to avoid calling it each time a delegate is first called.
2753
2754         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2755         which need static rgctx trampolines.
2756
2757         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2758         keyed on the method+addr pair, since addr could be either the method addr or
2759         an unbox trampoline in the AOT case. Fixes #560246.
2760
2761 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2764         place it was called before too.
2765
2766 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2767
2768         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2769         if no security manager is present, to speed up the AOT case. Call
2770         mono_class_vtable () full with raise_on_error == TRUE instead.
2771
2772 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2775         the local optimization passes can take its result into account. Fixes
2776         #559876.
2777
2778         * exceptions.cs: Add a test.
2779
2780 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2781
2782         This patch is contributed under the terms of the MIT/X11 license
2783
2784         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2785
2786 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2789
2790         * debugger-agent.c: Rework the handling of stack traces of running threads to
2791         avoid crashes if compute_frames () tries to walk the stack of running thread.
2792
2793         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2794
2795         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2796
2797         * mini.h (StackFrameInfo): Add an 'lmf' field.
2798
2799 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2800
2801         * debugger-agent.c (suspend_current): Always set really_suspended.
2802
2803         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2804
2805         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2806
2807 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2808
2809         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2810         really suspended.
2811
2812 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2815
2816 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2817
2818         * mini-trampolines.c: Fix MSVC build.
2819
2820 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2821
2822         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2823
2824 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2827         the instruction following an OP_FCOMPARE is optimized away.
2828
2829 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2832         emit_autoreg () into this arch-specific function.
2833
2834         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2835         code, it is no longer needed.
2836
2837         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2838
2839         * mini.h: Bump AOT file format version.
2840
2841         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2842         using the sorted_code_offsets array, instead of reading it from the
2843         exception debug info.
2844         (load_method): Call mono_aot_find_jit_info instead of
2845         decode_exception_debug_info ().
2846
2847         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2848         LLVM compiled as a flag.
2849
2850 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * debugger-agent.c (resume_thread): Fix a warning.
2853
2854         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2855         generated.
2856
2857 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2860         contents to MonoAotFileInfo.
2861
2862 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2865         Put all binary data into a giant blob, similarly to the way .net assemblies
2866         store binary data. Emit offset tables in a compact form to reduce their size.
2867
2868         * mini.h: Bump AOT file format version.
2869
2870         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2871         places.
2872
2873         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2874         avoid linear searches at runtime.
2875
2876         * aot-runtime.c (find_symbol): Update this to use the hash.
2877
2878         * mini.h: Bump AOT file format version.
2879
2880 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2883         container.
2884
2885         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2886         too.
2887
2888         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2889         the distribution of got slot types.
2890
2891         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2892
2893         * method-to-ir.c: Add support for generating explicit null checks.
2894
2895 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2898         on a random thread if possible.
2899
2900         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2901         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2902         correctly.
2903
2904         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2905         regs. Pass the real size of the regs array to mono_unwind_frame ().
2906
2907         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2908         ones instead.
2909
2910 2009-11-24  Geoff Norton  <gnorton@novell.com>
2911
2912         * mini-darwin.c: Work around apple bug rdar://7209349  See
2913         http://openradar.appspot.com/7209349 for details.  Synopsis,
2914         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2915         never been initialized before.
2916
2917 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2920
2921         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2922
2923 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2926         OP_SHL_IMM is not 32 bit.
2927
2928 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2931
2932 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2935         encountered.
2936
2937         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2938         > 0 since some threads can resume if their resume_count is > 0.
2939         (invoke_method): Avoid reading freed memory.
2940
2941         * debugger-agent.c (process_suspend): Extract the suspend code from
2942         process_single_step_inner () to a separate function. Rework the code to prevent
2943         races between this function and thread interrupts.
2944
2945         * debugger-agent.c (suspend_current): Check the resume_count field instead
2946         of resume_one so suspends+resumes during single threaded invokes work
2947         correctly.
2948
2949 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2952         to make the generated code smaller.
2953
2954         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2955         sequence generated by recent LLVM versions.
2956
2957         * mini-llvm.c: Add support for a few simple cases which weren't supported
2958         before.
2959
2960         * mini-trampolines.c (mono_magic_trampoline): Don't call
2961         mono_arch_get_vcall_slot () when llvm is enabled.
2962
2963         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2964
2965         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2966         into a new function called common_call_trampoline () which is used by the
2967         llvm vcall trampoline as well.
2968
2969         * debugger-agent.c: Implement single threaded invokes.
2970
2971         * debugger-agent.c: Revert change which broke the agent on linux.
2972
2973         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2974         #557606.
2975
2976         * generics.cs: Add a test.
2977
2978 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * debugger-agent.c: Fix the cygwin build.
2981
2982 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * cprop.c: Remove this unused file.
2985
2986 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2989         #557262.
2990
2991         * basic.cs: Add a test.
2992
2993 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2996         in one more place.
2997
2998 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
3001         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
3002         it. Use this flag to control llvm related code paths instead of #ifdef
3003         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
3004         AOT code.
3005
3006         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
3007
3008         * mini.h: Bump AOT file format version.
3009
3010         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
3011         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
3012
3013         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
3014         was used as an assembly filter.
3015
3016 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * unwind.c: Fix support for ppc.
3019
3020         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
3021         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
3022
3023 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
3026         port.
3027         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
3028         added by the ps3 changes.
3029
3030 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini-gc.c: Resurrect this, so at least it compiles.
3033
3034         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
3035
3036 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
3039         create_event_list () so assembly filters can be used.
3040
3041         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
3042         from the LMF.
3043
3044 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
3047         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
3048         is disabled.
3049
3050         * aot-compiler.c (add_generic_instances): Emit instances of common generic
3051         classes for char/bool too.
3052
3053         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3054
3055         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3056         used.
3057
3058         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3059         Fix warnings.
3060
3061 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3062
3063         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3064         
3065         Code contributed under MIT/X11 license.
3066
3067 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3068
3069         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3070         threads in native code work.
3071
3072         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3073         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3074         version.
3075
3076 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3077
3078         * debugger-agent.c: Implementation for Windows platform.
3079
3080         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3081         primitives. Use SEH to implement breakpoints and single stepping.
3082
3083         * mini-x86.h: Enable soft debugger on Windows.
3084
3085         Code contributed under MIT/X11 license.
3086
3087 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3090         under XEN. Fixes #522894.
3091
3092         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3093
3094         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3095         interface calls in LLVM AOT code.
3096
3097         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3098         is found.
3099
3100         * mini-llvm.c: Add support for OP_VPHI.
3101
3102         * objects.cs: Add a test.
3103
3104 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3105
3106         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3107         this is called on the debugger thread.
3108
3109 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * mini-llvm.c: Add soft-float support.
3112
3113         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3114         FCALL which returns an R4.
3115
3116         * driver.c (mono_main): Add a missing '\n'.
3117
3118         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3119         platforms which doesn't support the LLVM IMT trampoline.
3120
3121 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3124
3125         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3126
3127         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3128         virtual calls.
3129
3130         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3131
3132 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3135         Instead of emitting a method_order table, sort the contents of the code_offsets
3136         table and do a binary search in the sorted table. The previous approach doesn't
3137         work with LLVM which emits methods in a arbitrary order.
3138
3139         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3140         in the .eh_frame section in ELF files.
3141
3142         * mini.h: Bump corlib file format version.
3143
3144         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3145
3146         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3147         LDMIA->LDM macro name change.
3148
3149 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3150
3151         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3152         x86.
3153
3154         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3155         SVN.
3156
3157         * aot-compiler.c: Ditto.
3158
3159         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3160         &align to mini_type_stack_size_full ().
3161
3162         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3163
3164         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3165
3166 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3167
3168         * mini-arm.c: Compute the stack space used by arguments using
3169         mini_type_stack_size_full ().
3170
3171 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * optflags-def.h: Remove dead TREEPROP optimization.
3174
3175 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3178
3179         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3180
3181 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * driver.c (mono_jit_parse_options): New public API function to parse options
3184         as done by the runtime executable.
3185
3186         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3187         when handling named arguments.
3188
3189 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3192         for passing small vtypes in registers, make the CallInfo structures more
3193         similar to the code on the other platforms.
3194
3195         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3196         the code in the prolog requires it.
3197
3198 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3201         (koush@koushikdutta.com).
3202
3203         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3204         where the thunk memory should be allocated from. Fixes appdomain unloading
3205         on arm.
3206
3207 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3210         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3211
3212 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3215         AOT, as it is not implemented yet.
3216
3217         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3218
3219 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3220
3221         * debugger-agent.c: Fix windows build.
3222
3223 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3226         after the client connects/disconnects.
3227
3228         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3229         when an exception of a given type is thrown.
3230
3231         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3232         only on an uncaught exception.
3233
3234         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3235
3236         * debugger-agent.c: Add a 'launch' option.
3237
3238 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * debugger-agent.c: Add a 'timeout' option.
3241
3242 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3245         the JDWP agent.
3246
3247 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3248
3249         * debugger-agent.c (set_breakpoint): Emit a log message.
3250
3251 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3252
3253         * mini-arm.c: Fix the arm build.
3254
3255 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3256
3257         * aot-compiler.c: don't leak the value returned from
3258         mono_type_full_name().
3259
3260 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3261
3262         * debugger-agent.c: defer including mono-mutex.h until we know the
3263         agent is supported.
3264
3265 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3266
3267         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3268         of pthreads directly.
3269
3270         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3271         exception handlers. Pass info argument.
3272
3273         * mini.h: Adjust signatures of soft debugger functions to pass void*
3274         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3275
3276         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3277         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3278         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3279         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3280
3281         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3282
3283         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3284         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3285         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3286         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3287
3288         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3289
3290         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3291
3292         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3293
3294         * mono-semaphore.h: Skeleton implementation for Windows.
3295
3296         Code contributed under MIT/X11 license.
3297
3298 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3299
3300         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3301
3302         Code contributed under MIT/X11 license.
3303
3304 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3305
3306         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3307
3308         Code contributed under MIT/X11 license.
3309
3310 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3311
3312         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3313         debug info to 100 because 10 still slows down gdb too much.
3314
3315         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3316         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3317         them in the wrappers.
3318
3319 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3322
3323         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3324
3325         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3326         function mono_aot_get_array_helper_from_wrapper ().
3327
3328         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3329         array helper methods.
3330
3331 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3332
3333         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3334         the value was loaded from memory.
3335
3336         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3337         the value was loader from there.
3338
3339         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3340         without constant swizzle.
3341
3342 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3343
3344         * mini-amd64.c: Put soft debugger functions behind a
3345         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3346
3347         * mini-amd64.h: disable the soft debugger in windows.
3348
3349         Code contributed under MIT/X11 license.
3350
3351 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3352
3353         * mini-x86.c: Put soft debugger functions behind a
3354         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3355
3356         Code contributed under MIT/X11 license.
3357
3358 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3359
3360         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3361         to mono_arch_find_jit_info_ext.
3362
3363         Code contributed under MIT/X11 license.
3364
3365 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3368
3369         * debugger-agent.c: Add support for filtering events by assemblies.
3370
3371         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3372         the agent is not enabled.
3373
3374 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3375
3376         * exceptions-x86.c: hopefully last change to fix the windows build.
3377         This one courtesy of Jonathan Chambers.
3378
3379 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3380
3381         * debugger-agent.c: remove unused function.
3382
3383 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3384
3385         * debugger-agent.c: add #ifdefs for a few header files.
3386         * mini-x86.h: disable the soft debugger in windows.
3387         Step 1 of 2 to make this compile on windows with gcc.
3388
3389 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3392         as it breaks the build.
3393
3394 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3395
3396         Merge the soft debugger branch.
3397
3398         * debugger-agent.h debugger-agent.c: New files containing the soft
3399         mode debugger module.
3400
3401         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3402         at the appropriate locations.
3403
3404         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3405         opcode.
3406
3407         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3408         enable/disable single stepping.
3409
3410         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3411         which returns all information in a StackFrameInfo structure, and can handle the
3412         LMF frames added by the debugger.
3413
3414         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3415         about an LMF frame.
3416
3417         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3418         walker function which works on a specific thread and passes a StackFrameInfo
3419         structure to its callback.
3420
3421         * mini.c (mini_init): Initialize the debugger agent.
3422
3423         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3424
3425         * mini-ops.h: Add OP_SEQ_POINT opcode.
3426
3427         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3428         arguments to the debugger agent.
3429
3430 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3431
3432         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3433         speed things up.
3434
3435         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3436
3437         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3438
3439         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3440
3441         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3442         if needed.
3443         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3444         sets the IMT argument and makes a virtual call.
3445
3446         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3447
3448 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3451         the windows build.
3452
3453 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3454
3455         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3456         runtime. Fixes #551228.
3457
3458 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3461
3462         * basic.cs: Add a test.
3463
3464         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3465         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3466         CONSTRAINED. Fixes #550964.
3467
3468         * generics.cs: Add a test.
3469
3470 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3471
3472         * mini-posix.c (add_signal_handler): Use
3473         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3474
3475 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3476
3477         Contributed under the terms of the MIT/X11 license by
3478         Jerry Maine <crashfourit@gail.com>.
3479
3480         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3481         sse4a for simd intrinsics.
3482
3483         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3484         sse4a for simd intrinsics.
3485
3486 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3487
3488         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3489         instead of inst_p1 which is not the same on ILP32 platforms.
3490
3491 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3494         not the mscorlib one before calling mono_get_lmf_addr.
3495
3496         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3497         of the ip to the LMF.
3498
3499         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3500         immediate in the op->op_imm optimization.
3501
3502         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3503         understand. VTypes now work, but are not abi compliant, as they are
3504         split into 4 byte parts instead of 8.
3505         (emit_memcpy): Fix the unrolled case to work on the PS3.
3506
3507         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3508
3509         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3510         the default when static linking.
3511
3512         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3513
3514         * aot-compiler.c: Add an autoreg option to automatically register
3515         statically linked aot modules using ELF .ctors.
3516
3517         * genmdesc.pl: Add __ppc64__ to allowed defines.
3518
3519 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3522         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3523
3524 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3525
3526         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3527
3528 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3531         which will contain the domain where the method was found.
3532
3533         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3534         mini_jit_info_table_find ().
3535
3536         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3537
3538         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3539
3540 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3543         set, its not supported yet.
3544
3545 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3546
3547         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3548         iface wrapper is not found.
3549         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3550
3551 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3554         which have a different name.
3555
3556         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3557         wrappers and Array.GetGenericValueImpl ().
3558
3559         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3560         because of the change above.
3561
3562         * generics.cs: Add a test for full aot + generic array ifaces.
3563
3564 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3565
3566         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3567         that hides the previous one.
3568
3569 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3572         marshalled. Fixes #541623.
3573
3574 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3577
3578 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3581
3582 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3583
3584         * mini-posix.c (sigprof_signal_handler):
3585         Implemented support for building stat call chans in different ways.
3586
3587 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3588
3589         * mini-exceptions.c (mono_find_jit_info):
3590         Also check that a jit info has been found (fixes a profiler crash).
3591
3592 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3593
3594         * mini.c (mono_codegen):
3595         Call mono_profiler_code_buffer_new with correct code address.
3596
3597 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * driver.c (mono_main): Change the date in the copyright.
3600
3601 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3602
3603         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3604         allocator in shared generic code for open classes, because we
3605         can't get those classes' vtables.  We need to make managed
3606         allocators not depend on the vtable at compile-time to solve this.
3607
3608 2009-10-13  Martin Baulig  <martin@ximian.com>
3609
3610         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3611         `const guint8 *trampoline' argument; send both the old and the new
3612         notification.
3613
3614 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3617         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3618         (can_marshal_struct): Skip structures with auto layout.
3619
3620         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3621
3622 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3623
3624         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3625         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3626         a variable to hold the stack slot used by the int<->float conversion opcodes.
3627
3628         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3629
3630 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3633         when using full-aot.
3634
3635 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3638         each instance of Comparer<T>.
3639
3640         * generics.cs: Add a new test.
3641
3642 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3643
3644         * driver.c (parse_debug_options): Add a 'gdb' option.
3645
3646         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3647
3648         * image-writer.c: Add support for emitting the image into a memory buffer.
3649
3650         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3651
3652         * aot-compiler.c: Add support for registering debug info with GDB using the
3653         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3654         MONO_XDEBUG to 'gdb'.
3655
3656 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3659         gdb mode.
3660
3661 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3664         can be used to set breakpoints in gdb.
3665
3666         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3667         segment to an absolute address.
3668
3669 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3670
3671         * method-to-ir.c: Use the managed array allocator method if
3672         available.
3673
3674 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3675
3676         * aot-compiler.c : Fix the MSVC builds
3677
3678         Code is contributed under MIT/X11 license.
3679
3680 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3683         avoid registering 1 symbol file per method with gdb.
3684
3685 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * mini-sparc.c: Fix the handling of enums with base type long.
3688
3689         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3690
3691         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3692         instead of using type->data.klass as the later doesn't work with generics.
3693
3694 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3695
3696         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3697         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3698         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3699         works differently now and we don't handle it in the JIT anymore.
3700
3701         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3702         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3703         the Thread class split.
3704
3705 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * driver.c: Don't run tests with the obsolete treeprop optimization.
3708
3709         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3710         variable volatile. Fixes #541577.
3711
3712         * basic-calls.cs: Add a new test.
3713
3714         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3715
3716 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3719         work/required with recent iphone sdk versions.
3720
3721         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3722         structures.
3723
3724         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3725         in the VCALL decomposition code.
3726
3727 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3730
3731         * basic.cs: Add a test.
3732
3733         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3734         generic invokes.
3735
3736         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3737         searches all the domains of the current thread.
3738
3739         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3740
3741 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3744         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3745
3746         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3747         for non-jit trampolines.
3748
3749         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3750
3751         * aot-compiler.c (add_wrappers): Ditto.
3752
3753         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3754         the size of the param area used by dyn_call to 6 which covers the majority of
3755         methods.
3756
3757         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3758
3759         * mini-arm.c: Implement support for passing/receiving
3760         longs and receiving floats in the dyn_call code.
3761
3762         * mini-amd64.c: Implement support for receiving vtypes in registers in
3763         the dyn_call code.
3764
3765         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3766         the dyn_call code.
3767
3768 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3769
3770         * mini-arm.c (get_call_info): Return more precise information in
3771         ArgInfo->regtype.
3772         (dyn_call_supported): Use the information in CallInfo.
3773
3774         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3775
3776         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3777         code.
3778
3779         * mini-arm.c: Update after the dyn_call api changes.
3780
3781         * mini.c (mini_create_jit_domain_info): Register a destructor function
3782         for the runtime_invoke_hash.
3783
3784         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3785         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3786         this function.
3787         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3788         (dyn_call_supported): Simplify this by using get_call_info ().
3789         (mono_arch_dyn_call_free): New destructor function.
3790
3791         * generics.cs: Remove a printf.
3792
3793         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3794
3795         * mini-arm.c: Add support for enum return values and passing a few arguments
3796         on the stack.
3797         
3798         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3799         dyn invoke.
3800
3801         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3802
3803         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3804         the dynamic invoke wrappers.
3805
3806         * mini-arm.c: Implement OP_DYN_CALL for arm.
3807
3808         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3809         supported by the dynamic runtime invoke wrapper.
3810
3811         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3812         runtime invoke wrapper.
3813
3814         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3815         if possible when running with full-aot.
3816
3817         * mini-ops.h: Add OP_DYN_CALL opcode.
3818
3819         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3820         with dynamic arguments lists similar to libffi.
3821
3822 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3825         
3826         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3827         to NEWARR.
3828
3829         * iltests.il.in: Add a new test.
3830         
3831 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * aot-compiler.c (add_generic_instances): Add more instances of
3834         GenericEqualityComparer.
3835
3836 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3837
3838         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3839
3840 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3841
3842         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3843         comments on some functions that now can fail.
3844
3845 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3846
3847         * Makefile.am: Add Info.plist to EXTRA_DIST
3848
3849 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3852         static synchronized wrappers. Fixes #539500.
3853
3854 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3855
3856         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3857         properly.
3858
3859 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3860
3861         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3862         lmf before calling filter clauses as well. Fixes #539550.
3863
3864         * exceptions.cs: Add a test.
3865         
3866 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * aot-compiler.c (add_generic_class): Add instances of
3869         Array.GetGenericValueImpl as well.
3870
3871         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3872         can be tested too.
3873
3874         * generics.cs: Add a fullaot linq test.
3875
3876 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3877
3878         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3879         reg r1 on arm.
3880
3881 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3882
3883         * mini-trampolines.c (mono_delegate_trampoline) : Call
3884           mono_cominterop_get_invoke if the delegate target object
3885           is a COM object.
3886
3887         Code is contributed under MIT/X11 license.
3888
3889 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3890
3891         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3892         internal call is defined outside platform code. Reduce code 
3893         duplication with existing [Method|Field]AccessException
3894
3895 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3896
3897         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3898         if the return value is a small struct passed on regs.
3899
3900 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3903
3904         * mini-codegen.c: Enable the cpu description validation for arm.
3905
3906 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3909         test which depends on structs to objects.cs.
3910         
3911         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3912         require object model related stuff working.
3913
3914         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3915
3916         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3917
3918         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3919         against the instruction metadata in mini-ops.h. amd64 only for now.
3920
3921         * mini-ops.h: Fix some instruction descriptions.
3922
3923         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3924         unused instructions.
3925
3926 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * exceptions.cs: Add a new test.
3929
3930 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3933
3934 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3935
3936         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3937         skip empty phi opcodes.
3938         
3939         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3940         correctly by zero extending after loads. Skip methods containing calls
3941         to the monitor enter/exit trampolines.
3942
3943         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3944         when calling mono_thread_force_interruption_checkpoint ().
3945
3946         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3947
3948         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3949         64 bit thunks.
3950         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3951
3952         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3953         bootstrap could run.
3954
3955 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3958
3959 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3960
3961         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3962         of the method to
3963         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3964         LLVM might be very short.
3965
3966         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3967         in OP_THROW/RETHROW.
3968
3969         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3970         alignment on osx.
3971
3972 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3973
3974         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3975         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3976         LLVM might be very short.
3977
3978 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3979
3980         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3981         the alignment for the value of sp.
3982
3983 2009-09-01  Geoff Norton  <gnorton@novell.com>
3984
3985         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3986         managed wrappers in full aot.
3987
3988 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3991
3992 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3995
3996 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3999
4000         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
4001         saved info.
4002
4003         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4004
4005         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
4006         depend on the info MonoMethodHeader which could be missing in IL stripped
4007         assemblies.
4008
4009 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
4012         they are only 4 byte aligned.
4013
4014 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
4015
4016         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
4017         was done previously, since using SP causes too many problems.
4018
4019         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
4020         frames without a frame pointer works.
4021
4022         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
4023         global register in methods with calls, since the calls can go through
4024         a static rgctx trampoline which doesn't save it.
4025
4026 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
4027
4028         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
4029
4030 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
4033
4034 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4035
4036         * method-to-ir.c: Fix warnings for uninitialized variables.
4037
4038 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4039
4040         * mini-exceptions.c:
4041         * aot-compiler.c: Fix printf warnings.
4042
4043 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
4046         Add GetGenericValueImpl<string>.
4047         
4048         * aot-compiler.c (add_generic_instances): Add instances of
4049         GenericEqualityComparer<T> for primitive types. Only emit the array
4050         wrappers into the mscorlib image.
4051
4052 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4053
4054         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4055         the methods_loaded array using amodule->info->nmethods.
4056
4057         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4058         (MONO_AOT_FILE_VERSION): Bump this.
4059
4060         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4061         to work.
4062
4063         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4064         MonoJitInfo doesn't belong to its methods aot image.
4065
4066 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4069
4070         * mini-arm.c: Fix warnings.
4071         
4072         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4073
4074         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4075         supports it.
4076
4077 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4080         avoid clobbering IP.
4081
4082         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4083         hold the trampoline argument, so its initial value is available during
4084         debugging.
4085
4086 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4087
4088         * exceptions-arm.c:
4089         * exceptions-hppa.c:
4090         * mini.c:
4091         * exceptions-s390x.c:
4092         * exceptions-mips.c:
4093         * exceptions-ppc.c:
4094         * exceptions-sparc.c:
4095         * exceptions-alpha.c:
4096         * aot-runtime.c:
4097         * mini-trampolines.c:
4098         * exceptions-x86.c:
4099         * exceptions-s390.c: add and use #define's instead of sizeof()
4100         for MonoJitInfo and MonoJitInfoTable.
4101
4102 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4103
4104         * tramp-arm.c:
4105         * tramp-amd64.c:
4106         * tramp-ppc.c:
4107         * tramp-x86.c: use a #define instead of sizeof() for a few
4108         structures that use a zero-length array.
4109
4110 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4111
4112         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4113         case when the method is dynamic. Fixes #529238.
4114
4115 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4118         of asserting when a method is JIT compiled in full-aot mode.
4119
4120 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4121         
4122         Contributed under the terms of the MIT/X11 license by
4123         Jerry Maine <crashfourit@gail.com>.
4124         
4125         * fixed wrong dates in changelog.
4126
4127 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4128         
4129         Contributed under the terms of the MIT/X11 license by
4130         Jerry Maine <crashfourit@gail.com>.
4131
4132         * basic-simd.cs: added test for packed double square root.
4133         * cpu-amd64.md: added opcode info for packed double square root.
4134         * cpu-x86.md: added opcode info for packed double square root.
4135         * mini-ops.h: added IR opcode for packed double square root.
4136         * mini-x86.c: added IR to native translation code for packed double square root.
4137         * mini-amd64.c: removed todo for packed double square root.
4138         * simd-intrinsics.c: added method to IR opcode converstion for
4139         packed double square root.
4140
4141 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4142
4143         Contributed under the terms of the MIT/X11 license by
4144         Jerry Maine <crashfourit@gail.com>.
4145
4146         * mini-amd64.c: Added a change to help tell the difference as 
4147         to what perpose the xmm register is being used--mainly to help
4148         with debuging.
4149         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4150         (one used for special cases) xmm registers for both fp
4151         and simd ops. Added define to turn on new feature in the regalloc
4152         that allows fp and simd ops to share the xmm regs happily.
4153         * codegen.c: Added code to detect for which perpose an xmm reg is
4154         being used (fp or simd) and to translate back and forth to the
4155         correct logical reg bank (fp or simd) for 'spill load's.
4156
4157 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4158
4159         Contributed under the terms of the MIT/X11 license by
4160         Jerry Maine <crashfourit@gail.com>.
4161
4162         * basic-simd.cs: Added tests for stressing the regalloc when running with
4163         16 simd regs and when simd and fp ops share the same reg bank.
4164
4165 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4166
4167         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4168         in shared generic code, we might have to look up the class in the
4169         RGCTX.  If we use the class directly, compute its GC descriptor.
4170
4171 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4172
4173         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4174
4175 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4176
4177         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4178         check for errors. Fixed the case when the class with the Main
4179         method is broken.
4180
4181 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4182
4183         Contributed under the terms of the MIT/X11 license by
4184         Jerry Maine <crashfourit@gail.com>.
4185
4186         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4187
4188 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4189
4190         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4191
4192 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4193
4194         * method-to-ir.c: Fix naming of stelem and ldelem.
4195
4196 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4197
4198         * driver.c (main_thread_handler): Check that the assembly loaded
4199         matches the filename when doing AOT.
4200
4201 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4202
4203         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4204         call it anymore.
4205
4206         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4207         utils/mono-sigcontext.h).
4208
4209         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4210         #ifdef.
4211
4212 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4213
4214         * mini.c (mono_codegen):
4215         Call profiler hook to keep track of method code buffers.
4216
4217 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4218
4219         * method-to-ir.c: Invoke write barriers for the
4220         Interlocked.(Compare)Exchange JIT intrinsics.
4221
4222 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4223
4224         * Makefile.am (version.h): Fix issues when built out of tree.
4225         Remove some redundant 'grep's piped through 'sed's.
4226
4227 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4228
4229         This patch is contributed under the terms of the MIT/X11 license
4230
4231         * mini-ppc.c (mono_arch_output_basic_block):
4232         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4233         for bits 32-47 with signed load/store diplacements for bits
4234         48-63.  Use prefered base/offset order for indexed form.
4235         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4236         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4237         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4238         OP_LOADI2_MEMBASE): Same.
4239         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4240         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4241         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4242         indexed form.
4243         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4244         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4245         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4246         OP_LOADI1_MEMINDEX): Same
4247         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4248         OP_STORER8_MEMINDEX): Same
4249         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4250         computations.
4251         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4252         for bits 32-47 with signed load/store diplacements for bits
4253         48-63.  Use prefered base/offset order for indexed form.
4254
4255 Fri Jul 24 16:57:12 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: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4260         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4261         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4262         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4263         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4264         cfg->stack_usage to avoid size warnings.
4265         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4266         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4267         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4268         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4269         to convert.
4270         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4271         after code varible is initialized.
4272         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4273         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4274         (mono_arch_emit_epilog): 
4275         Move Use ppc_load32 for cfg->stack_usage to avoid size
4276         warnings.
4277
4278 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4279
4280         * method-to-ir.c: The write barrier doesn't do the store anymore,
4281         so we have always to emit it.  Also, emit the wbarrier after the
4282         store.
4283
4284 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4287         for argument count 3 too.
4288
4289 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4290
4291         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4292         the caller handle the exceptions.
4293         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4294         method. Fixes #524498.
4295
4296 2009-07-22  Geoff Norton  <gnorton@novell.com>
4297
4298         * mini-exceptions.c: Fix build on ia64.
4299
4300 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4301
4302         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4303         barriers.
4304
4305 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4308         code.
4309
4310 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * basic-simd.cs (Main): Pass args to the test driver.
4313
4314 2009-07-20  Geoff Norton  <gnorton@novell.com>
4315
4316         * mini-x86.h: Fix the x86 version guards to use Apple's
4317         properly defined macros.
4318
4319 2009-07-20  Geoff Norton  <gnorton@novell.com>
4320
4321         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4322         aligned access.
4323
4324 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4327         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4328         the information which is needed for invokes, so only one locking+hash table
4329         lookup is needed.
4330
4331         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4332         
4333         * aot-compiler.c (add_generic_instances): Emit instances of 
4334         GenericComparer<T> for primitive types.
4335
4336 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4337
4338         * mini-posix.c: Fix linux build.
4339
4340 2009-07-19  Geoff Norton  <gnorton@novell.com>
4341
4342         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4343         mono_gdb_render_native_backtraces
4344         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4345         so we implement the sane semantics to the runtime here
4346         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4347         so we need to call it differently (mono_gdb_render_native_backtraces)
4348         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4349         here for default implementations.
4350         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4351         support Apple's weird syscall (SYS_fork) implementation and not busy
4352         loop in abort() on native crashes on OSX anymore.
4353
4354 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4355
4356         * aot-runtime.c (load_method): Change the handling of the
4357         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4358         are used.
4359
4360         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4361
4362 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4363
4364         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4365         seems to break the aot tests.
4366         
4367         * mini.c (mono_patch_info_equal): Fix the handling of 
4368         MONO_PATCH_INFO_RGCTX_FETCH.
4369
4370 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4373
4374         * mini.c (mono_patch_info_hash): Fix the handling of 
4375         MONO_PATCH_INFO_INTERNAL_METHOD.
4376         (mono_patch_info_equal): Ditto.
4377
4378 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4381         in a few places.
4382         
4383         * mini-llvm.c: Add some infrastructure for AOT support.
4384
4385 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * mini-llvm-cpp.c: Update to the latest llvm api.
4388         
4389         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4390         option to false to prevent llvm from installing signal handlers which
4391         trip up the gc.
4392         
4393 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4394
4395         * cpu-x86.md:
4396         * cpu-amd64.md: Revert previous change as those instructions
4397         take 2 separate arguments. Remember to read the arch docs more
4398         carefully next time.
4399
4400 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4403
4404 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4405
4406         * mini-ppc.c: exploit multiple load/store units if available (rest of
4407         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4408         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4409
4410 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4411
4412         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4413         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4414
4415 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * cpu-x86.md: Fix missing clobbering from trancendental simd
4418         ops.
4419
4420         * cpu-amd64.md: Same.
4421
4422 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4423
4424         Contributed under the terms of the MIT/X11 license by
4425         Jerry Maine <crashfourit@gail.com>.
4426
4427         * basic-simd.cs: Added tests for single and doulble indexers.
4428
4429         * cpu-amd64.md: Added simd opcode information.
4430
4431         * mini-amd64.c: Added IR to native simd generation code.
4432         Added simd register names and function that returns them.
4433
4434         * mini-amd64.h: Added marcos to turn on simd code compilation in
4435         amd64. Added max simd register count marco. Added caller/callee
4436         register mask marcos. Added marcos to use simd register bank.
4437
4438         * mini.h: Added helper marco for shufling dwords and simple
4439         floats.
4440
4441 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4442
4443         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4444
4445         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4446
4447         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4448         the length of the native code as well.
4449
4450         * basic-simd.cs: Add a test for #521662.
4451
4452 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4453
4454         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4455
4456 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4457
4458         * mini.c: Register function for getting the IP from a signal
4459         context with metadata.
4460
4461 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4462
4463         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4464         call a generic class init trampoline if needed. Fixes #519336.
4465
4466         * generics.cs: Add a test.
4467         
4468 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4469
4470         * method-to-ir.c: When doing a call which might be remote from
4471         shared generic code to other shared code with open type arguments,
4472         get the remoting invoke wrapper from the RGCTX and do an indirect
4473         call to it.
4474
4475 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4478         after the unbox trampoline in the full-aot case.
4479
4480 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4481         
4482         * mini.c: Move initialization of jit_mutex before debugger initialization
4483         
4484         to avoid crashes.
4485         
4486         
4487         * Info.plist: added Info.plist and link flag to enable the mono executable
4488         to access other processes. Requires codesigning of the executable to work.
4489         
4490         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4491         
4492         compile on OS X.
4493         
4494
4495 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4496
4497         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4498
4499 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4502         when the generic instance is an instantiation of a subclass of the
4503         methods class. Fixes #517166.
4504
4505 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4508         code.
4509
4510         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4511         AOTed code.
4512
4513         * CMakeLists.txt: Add minimal support for installation.
4514
4515 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4516
4517         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4518         determine whenever a method is directly callable to a separate function.
4519
4520         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4521         needed ones as a result of the previous change.
4522
4523         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4524         type of register arrays.
4525
4526         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4527         type of register arrays.
4528
4529 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4530         
4531         Contributed under the terms of the MIT/X11 license by
4532         Jerry Maine <crashfourit@gail.com>.
4533
4534         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4535
4536 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4539
4540 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4541
4542         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4543         dump of structure return value. Fix some formatting.
4544         * cpu-s390x.md: Fix lengths of instruction sequences.
4545         * mini-s390.c: Minor formatting changes.
4546
4547 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4548
4549         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4550         Use sigaction on freebsd as well.
4551
4552 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4555         uses #ifdef on it.
4556         
4557         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4558
4559 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4560
4561         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4562
4563 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4564
4565         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4566
4567 2009-06-20  Martin Baulig  <martin@ximian.com>
4568
4569         * debug-mini.c
4570         (MonoDebuggerThreadFlags): New enum typedef.
4571         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4572         (mono_debugger_thread_created): Added `gpointer func' argument;
4573         initialize the new `thread_flags' field.
4574
4575 2009-06-18  Martin Baulig  <martin@ximian.com>
4576
4577         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4578         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4579
4580         * debug-debugger.c
4581         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4582         flag in `MONO_DEBUGGER__info.runtime_info'.
4583
4584         * driver.c
4585         (mono_main): Call mini_debugger_set_attach_ok() if generics
4586         sharing is disabled.
4587
4588 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4589
4590         * aot-compiler.c (add_wrappers): Fix a warning.
4591
4592         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4593         the ppc load/store macro changes.
4594
4595 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4598
4599         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4600         not just the got symbol.
4601
4602         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4603         on ppc.
4604
4605         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4606         ppc.
4607         
4608         * aot-compiler.c: Remove some fixmes.
4609
4610         * driver.c (mono_main): Print a helpful message when cross-compiling.
4611
4612         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4613
4614         * method-to-ir.c (initialize_array_data): Do the optimization if the
4615         target byte order is little endian, instead of the host byte order.
4616
4617         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4618         wrappers into the mscorlib image, Emit a unique plt symbol for each
4619         image, emit symbols for plt entries.
4620
4621         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4622         a .size directive.
4623         
4624 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * aot-compiler.c (add_wrappers): Avoid calling 
4627         mono_marshal_get_type_info () since it can assert for some types.
4628
4629         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4630         ldtoken are used inside wrappers.
4631
4632         * helpers.c: Add support for prefixing tools with the arch name.
4633
4634         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4635         quantities when using ilp32.
4636
4637         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4638         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4639
4640         * image-writer.c: Use .long on ilp32.
4641
4642         * aot-compiler.c: Use 32 bit loads on ilp32.
4643         
4644 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4645
4646         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4647
4648         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4649
4650         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4651
4652         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4653         second got slot of every aot image.
4654         
4655         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4656         aot on platforms with function pointers.
4657
4658         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4659         support for aot/full aot on ppc/ppc64.
4660         
4661         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4662         arguments which are needed on ppc.
4663
4664         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4665         argument.
4666
4667         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4668         
4669         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4670
4671         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4672
4673         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4674
4675         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4676
4677 2009-06-17  Geoff Norton  <gnorton@novell.com>
4678
4679         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4680
4681 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4684         to control whenever the dwarf writer is in xdebug or aot mode.
4685         (emit_class_dwarf_info): Use a separate abbrev for structures without
4686         children.
4687
4688         * aot-compiler.c: Pass the appending parameter to 
4689         mono_dwarf_writer_create ().
4690
4691         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4692         falls through to its next bblock. Fixes #513931.
4693
4694         * iltests.il: Add a test.
4695
4696         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4697         infor even if emit_line is FALSE, as the apple linker seems to require it.
4698
4699         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4700
4701         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4702         gcc does.
4703         (emit_fde): Ditto.
4704
4705 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4708         mips build.
4709
4710 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4713         'has_call_handler' fields.
4714
4715         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4716
4717         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4718         first bblock if not needed. Fixes #512790.
4719         
4720 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4723         
4724         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4725         wrappers.
4726
4727         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4728         remoting-invoke-with-check wrappers, which are not needed when running with
4729         full-aot, since it doesn't support remoting.
4730         
4731 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4734
4735         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4736         method info, it is not used anymore.
4737
4738         * mini.h: Bump AOT file format version.
4739         
4740         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4741         word smaller.
4742
4743         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4744         change above.
4745         
4746         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4747
4748         * mini.h: Bump AOT file format version.
4749         
4750 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4753         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4754         iphone.
4755
4756         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4757         of CKFINITE and FBGE for VFP.
4758
4759 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * aot-compiler.c: Don't align code to 16 bytes on arm.
4762         
4763         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4764         before the methods they belong to.
4765
4766         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4767         the full-aot case if possible, since the trampoline will be called right 
4768         away.
4769
4770         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4771         trampolines to 1024 after the change above.
4772
4773         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4774         trampoline to save 8 bytes per trampoline.
4775
4776         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4777         change above.
4778
4779 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4780
4781         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4782
4783 2009-06-08  Martin Baulig  <martin@ximian.com>
4784
4785         * debug-mini.c
4786         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4787         (_mono_debugger_throw_exception): Don't make this static.
4788         (_mono_debugger_unhandled_exception): Likewise.
4789         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4790
4791         * debug-mini.c
4792         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4793         (_mono_debugger_throw_exception): Add function prototype.
4794         (_mono_debugger_unhandled_exception): Likewise.
4795
4796         * mini-exceptions.c
4797         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4798         arg; return the first exception handler if the exception is caught
4799         and we're running inside the debugger.
4800         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4801         improve exception handle inside runtime-invoke, check whether the
4802         exception is actually caught in the method being invoked and not
4803         by the runtime-invoke-wrapper.
4804
4805 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4806
4807         * image-writer.c: Improve support for the osx assembler.
4808
4809         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4810         support them.
4811
4812 2009-06-08  Martin Baulig  <martin@ximian.com>
4813
4814         * debug-mini.c
4815         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4816         (_mono_debugger_throw_exception): Don't make this static.
4817         (_mono_debugger_unhandled_exception): Likewise.
4818         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4819
4820         * debug-mini.c
4821         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4822         (_mono_debugger_throw_exception): Add function prototype.
4823         (_mono_debugger_unhandled_exception): Likewise.
4824
4825         * mini-exceptions.c
4826         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4827         arg; return the first exception handler if the exception is caught
4828         and we're running inside the debugger.
4829         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4830         improve exception handle inside runtime-invoke, check whether the
4831         exception is actually caught in the method being invoked and not
4832         by the runtime-invoke-wrapper.
4833
4834 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * image-writer.c (append_subsection): Don't align subsections of the
4837         debug_line section as a workaround.
4838
4839         * dwarfwriter.c: Emit line number info in the AOT case as well.
4840
4841 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4842
4843         This patch is contributed under the terms of the MIT/X11 license
4844
4845        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4846        code_len <= code_size
4847
4848 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4851
4852 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4853
4854         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4855         invoke wrappers, we now use trampolines instead.
4856
4857 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4858
4859         * mini-darwin.c: The exception thread must not be registered with
4860         the GC.
4861
4862 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4863
4864         * mini-gc.c: Disable the code because it makes SGen crash.
4865
4866 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4869         instead of asserting.
4870
4871 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4874         output file after the code has been compiled.
4875
4876 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4879
4880 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4883         entries distinction to simplify the code.
4884
4885         * mini.h: Bump AOT file format version.
4886         
4887 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4888
4889         * objects.cs: Fix the signature of one of the tests.
4890
4891         * mini.c (mini_create_ftnptr): New helper function, moved here from
4892         object.c.
4893         (mini_get_addr_from_ftnptr): Ditto.
4894         (mini_init): Install the new helpers.
4895
4896 2009-05-28  Martin Baulig  <martin@ximian.com>
4897
4898         Correctly initialize the debugger when embedding Mono.
4899
4900         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4901         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4902         see documentation in mini_debug_running_inside_mdb().
4903
4904         * debug-debugger.c
4905         (mini_debug_running_inside_mdb): New function to check whether
4906         we're running inside mdb.
4907
4908         * mini.c (mini_init): Call mini_debugger_init() if we're running
4909         inside the debugger.
4910
4911         * driver.c (mono_main): Moved the call to mini_debugger_init()
4912         into mini_init() to make this work when embedding Mono.
4913
4914         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4915         calls to mini_debugger_init().
4916
4917         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4918         mono_debugger_main() -> mini_debugger_main() and put them inside a
4919         `MONO_DEBUGGER_SUPPORTED' conditional.
4920
4921 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4922
4923         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4924         this is no longer in use.
4925         * mini.h: Same.
4926
4927 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4930
4931         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4932         methods.
4933
4934 2009-05-27  Martin Baulig  <martin@ximian.com>
4935
4936 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4937
4938         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4939         long_conv_to_r_un to 64 bits.
4940
4941         * cpu-x86.md: Increase the instruction size due to the changes.
4942
4943         * iltests.il.in: Add regression test.
4944
4945         Fixes #467201.
4946
4947 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4948
4949         * objects.cs: Move the previous test from basic.cs to here.
4950
4951 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * basic.cs: Add regression test for #506915.
4954
4955 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4956
4957         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4958         optimization we must check the bb of the first byte of stobj as
4959         it's the only one set in cil_offset_to_bb.
4960
4961         Fixes #506915.  
4962
4963 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4964
4965         * image-writer.c: Fix pointer directive on ppc64.
4966
4967 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * image-writer.c (asm_writer_emit_section_change): Avoid using
4970         .bss subsections on ppc too.
4971
4972 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4973
4974         * image-writer.c: Fix the definition of TARGET_ASM_....
4975         
4976         * image-writer.c: Fix the emission of assembler directives in the last
4977         change.
4978
4979         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4980         exception throwing code to accomodate ppc64.
4981
4982         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4983         size to work on ppc64 too.
4984
4985         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4986         too.
4987
4988         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4989         the assembler dialect instead of using platform specific defines.
4990
4991 2009-05-22  Geoff Norton  <gnorton@novell.com>
4992
4993         * mini-arm.c (get_call_info): If a structure is split between the stack
4994         and argument registers, we should not advance the stack pointer by the entire
4995         native size, but just by the amount that spilled.
4996
4997 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * mini-arm.c (get_call_info): Handle structures with alignment requirements
5000         correctly.
5001
5002 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5003
5004         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
5005         wrappers normally.
5006         
5007         * aot-compiler.c (add_extra_method): Fix up the collection of extra
5008         methods so wrapper don't get added twice.
5009         (add_generic_instances): Don't add methods of arrays.
5010
5011         * generics.cs: Mark one test as !FULLAOT.
5012
5013 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5014
5015         * mini-x86.c (emit_move_return_value): Remove unused vars.
5016
5017 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5018
5019         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
5020         decomposing 8 bytes structs into a LCALL.
5021
5022         * mini-x86.c (emit_move_return_value): We no longer push the vtype
5023         pointer for where to store the returned regs.
5024
5025         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
5026         state the concern.
5027
5028         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
5029
5030 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5031
5032         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
5033         without getenv.
5034
5035 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
5038
5039         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
5040         generics.
5041
5042 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
5043
5044         * local-propagation.c (mono_local_cprop): Avoid local propagation
5045         across paired add/sub if the first instruction dest reg is it's
5046         source reg. For example:
5047
5048         int_add_imm R12 <- R12 [1] clobbers: 1
5049         int_sub_imm R42 <- R12 [1] clobbers: 1
5050
5051         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
5052         maintain the math identify.
5053
5054         Fixes #505375.
5055
5056 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5057
5058         * Makefile.am: avoid going on the network just to get the revision,
5059         use git log instead
5060
5061 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5062
5063         Fixed estimate for short branches on amd64 (they were off mark, and
5064         enabling call prolog-epilog instrumentations caused assertions).
5065         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5066         estimate for the maximum length of this basic block.
5067         * mini-amd64.c:
5068         - mono_arch_emit_prolog: compute max_length for each basic block
5069           (instead of max_offset), and inflate size estimate also for entry bb
5070           in case of code instrumentation.
5071         - mono_arch_output_basic_block: get rid of "cpos" (the current
5072           estimated "position" in the code), and always use "offset" instead,
5073           which is accurate; at the beginning of the function quickly recompute
5074           max_offset for all the remaining blocks, starting from the current
5075           cfg->code_len (which is correct, and not estimated) and using the
5076           estimated block lengths computed previously.
5077
5078 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5079
5080         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5081         functions, it is already done in the caller.
5082
5083         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5084
5085         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5086         MONO_ARCH_GSHARED_SUPPORTED define.
5087
5088         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5089
5090         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5091         function.
5092
5093 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5094
5095         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5096         call to mono_marshal_get_rgctx_invoke ().
5097
5098         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5099         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5100         gshared use the static rgctx trampolines now.
5101         
5102         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5103         platform supports it.
5104
5105 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5108
5109         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5110
5111 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5112
5113         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5114
5115         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5116         for ppc.
5117
5118 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5119
5120         Made it possible for mono_arch_instrument_epilog to preserve
5121         argument registers, otherwise instrumenting the "epilogue" before
5122         a tail call would clobber them.
5123         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5124         if like mono_arch_instrument_epilog but with an additional parameter
5125         that states if argument registers must be preserved.
5126         * mini.c: implemented mono_arch_instrument_epilog as a call to
5127         mono_arch_instrument_epilog_full without asking to preserve argument
5128         registers (this makes the existing code work as usual).
5129         * mini-amd64.c:
5130         - mono_arch_instrument_epilog: add parameter to transform it into
5131         mono_arch_instrument_epilog_full, and preserve argument registers
5132         when required.
5133         - mono_arch_output_basic_block, OP_TAILCALL case: call
5134         mono_arch_instrument_epilog_full.
5135         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5136         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5137         only transformed mono_arch_instrument_epilog into
5138         mono_arch_instrument_epilog_full.
5139
5140 2009-05-15  Geoff Norton  <gnorton@novell.com>
5141
5142         * mini-darwin.c: This works on arm now.
5143
5144 2009-05-14  Geoff Norton  <gnorton@novell.com>
5145
5146         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5147         embedding api.
5148
5149 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5152         label names.
5153
5154         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5155         wrappers during full aot mode correctly.
5156
5157         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5158         methods correctly.
5159
5160         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5161         mono_metadata_type_hash ().
5162
5163 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5164
5165         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5166         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5167         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5168         Removed MONO_INST_BRLABEL from the instruction flags, and the
5169         remaining code that used it, because we do not support branches inside
5170         basic blocks (and branch target labels) anymore.
5171         * Makefile.am: As part of the above cleanup, remove reference to
5172         BURG files which don't exist anymore.
5173
5174 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5175
5176         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5177         osx.
5178
5179         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5180         to use mono_arch_throw_corlib_exception.
5181
5182         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5183         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5184
5185         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5186         domain mempool.
5187
5188         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5189
5190         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5191         for the got to make debugging easier and to avoid confusing it with the
5192         system got.
5193         
5194         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5195         method so a breakpoint can be set when using gdb.
5196
5197 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5200         on mono_method_get_imt_slot ().
5201
5202         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5203         num_decodes variables.
5204
5205         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5206         change as it doesn't seem to work.
5207         
5208         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5209         wrappers.
5210
5211 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5212
5213         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5214         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5215
5216         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5217         builder when using full aot.
5218
5219         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5220         here, it is already handled.
5221         
5222         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5223         correctly for IMT.
5224
5225         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5226
5227         * mini-arm.h: Enable IMT for full aot.
5228         
5229         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5230         arch doesn't support it.
5231
5232         * mini.c (mini_init): Don't disable IMT for full aot if the
5233         architecture supports it.
5234
5235         * mini.h (MonoAotTrampoline): New enum containing the different types
5236         of 'numerous' trampolines.
5237         (MONO_AOT_FILE_VERSION): Bump this.
5238
5239         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5240         static rgctx trampolines. Add support for full-aot IMT thunks.
5241
5242         * mini-amd64.h: Enable IMT for full aot.
5243
5244         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5245         to exclude tests belonging to a category.
5246
5247         * generics.cs: Mark some tests with a !FULLAOT category.
5248
5249         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5250         generics tests.
5251
5252 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5255         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5256         (emit_plt): Fix a warning.
5257
5258 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5261         back into aot-compiler.c to a place where the other functions shared by
5262         the runtime and aot compiler are.
5263         
5264         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5265         as done previously, instead of in MonoAotFileInfo, since pointers might have
5266         alignment requirements.
5267
5268         * mini.h: Bump AOT file format version.
5269
5270 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5271
5272         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5273         that is used at runtime from the aot-compiler.c, this makes it
5274         work on setups that remove the AOT compiler from the output
5275         image. 
5276
5277 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5280         PPC.
5281
5282         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5283
5284         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5285
5286         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5287         stuff to mono_arch_decompose_long_opts ().
5288         (mono_decompose_opcode): Remove some dead code.
5289
5290 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5291
5292         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5293         cmethod can be null for quite a some reasons.
5294
5295 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5296
5297         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5298
5299 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5302
5303 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5304
5305         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5306         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5307         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5308         calls returning structures by addr on amd64.
5309
5310         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5311
5312         * iltests.il.in: Restructure the tail call tests a bit.
5313         
5314 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5317         for virtual methods too.
5318
5319 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5320
5321         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5322         due to regression in verifying System.dll.
5323
5324 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5327         in dynamic methods.
5328
5329         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5330         instances.
5331
5332         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5333         g_str_hash () which can change.
5334
5335         * driver.c (mini_regression): Disable optimizations not supported by
5336         the cpu. Fixes #500019.
5337
5338         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5339         build.
5340
5341 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5342
5343         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5344         to the latest LLVM code.
5345
5346 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5349
5350 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5353         x86/amd64.
5354
5355         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5356         no longer saving offsets, so just save the patch types along with the other
5357         info.
5358         * aot-runtime.c (load_patch_info): Update after the changes to 
5359         encode_patch_list ().
5360         (decode_got_entry): Removed, merged into load_patch_info ().
5361         (is_shared_got_patch): Removed, call the same function from
5362         aot-compiler.c.
5363
5364         * mini.h: Bump aot file format version.
5365         
5366         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5367         half-finished no-dlsym code.
5368
5369         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5370         option.
5371
5372         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5373         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5374
5375 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5378         buffer length to work with AOT code.
5379
5380         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5381         ldfld/stfld opcodes.
5382
5383         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5384         as it is not used.
5385
5386         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5387
5388         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5389
5390         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5391         LLVM API.
5392
5393         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5394         if needed. Don't decompose long operations when using llvm.
5395
5396 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5399         PAGESIZE constant.
5400
5401         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5402
5403 2009-05-03  Martin Baulig  <martin@ximian.com>
5404
5405         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5406         mono_debugger_insert_method_breakpoint() since the class init
5407         handler we're inserting at the top of the method already gives us
5408         a notification.
5409
5410 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5413         to mono_arch_decompose_long_opts () for x86 and arm.
5414
5415 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5418         TARGET_AMD64 here.
5419
5420 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5421
5422         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5423         JIT code.
5424
5425 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5428         number of trampolines used in full-aot mode.
5429
5430         * aot-compiler.c: Add an ntrampolines option to set the number of 
5431         trampolines emitted in full-aot mode.
5432
5433 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5434
5435         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5436         a volatile load. Get rid of get_tempname (), llvm assigns names
5437         automatically.
5438
5439         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5440         builder function.
5441
5442         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5443         a value.
5444
5445         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5446         level 1.
5447
5448         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5449         to the same register as a fixed sreg2. Fixes #497271.
5450
5451         * iltests.il.in: Add a new test.
5452
5453 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5456         stack, since pushes complicate exception handling.
5457
5458         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5459         the stack if they are passed using moves.
5460
5461         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5462
5463         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5464         when using llvm.
5465
5466         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5467         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5468         of FMOVE if it is an R4.
5469
5470 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5473
5474         * mini.h (LLVMCallInfo): New structure to store calling convention 
5475         information for the LLVM back end similar to the CallInfo structures in 
5476         the back-ends.
5477
5478         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5479         call information in a format usable by LLVM.
5480         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5481
5482         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5483         mono_llvm_emit_call () when compiling using LLVM.
5484
5485         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5486         comments to all functions. Fix memory leaks. Add a public init/cleanup
5487         function.
5488
5489         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5490
5491         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5492         mono_array_new_va () jit icall.
5493         
5494 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5495
5496         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5497         multiple machine description files to be specified.
5498         * mini-ops.h: fixes for cross-compilation.
5499
5500 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5501
5502         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5503         some porting work.
5504
5505 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5506
5507         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5508         to prevent asserts in various passes. Fixes #497220.
5509
5510 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5513         a racy assert.
5514
5515         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5516         table to avoid duplicates.
5517
5518         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5519         
5520         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5521         option is used.
5522
5523 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5524
5525         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5526         is for method or field access.
5527
5528 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5531         a Value to stdout.
5532
5533         * mini-llvm.c (mono_llvm_emit_method): Use it.
5534         
5535         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5536         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5537         on volatile values.
5538
5539         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5540         synchronized methods.
5541
5542         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5543
5544         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5545
5546         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5547         OP_LOADI8_MEM.
5548
5549         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5550         allowing some options to be set dynamically.
5551
5552 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5555         unconditional branch.
5556
5557         * mini.h (MonoTrampolineType): Add new trampoline type 
5558         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5559         compiled code.
5560
5561         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5562         function.
5563
5564         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5565         creation function.
5566
5567         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5568         is enabled. Instead, use the llvm vcall trampoline.
5569         
5570         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5571
5572         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5573         
5574         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5575         functions.
5576
5577         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5578         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5579
5580         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5581         OP_IA64_CSET opcode.
5582
5583         * mini.c: Fix a warning.
5584
5585         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5586         THROW to the appropriate llvm type.
5587
5588 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * mini.c (mini_method_compile): Add statistics for methods JITted
5591         with/without LLVM.
5592
5593 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5596         OP_IA64_CMP_<cond>_IMM opcodes.
5597
5598 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5601         corlib exceptions.
5602
5603         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5604         correctly.
5605
5606         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5607         GENERICINST.
5608
5609 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5610
5611         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5612
5613 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5616         support.
5617
5618         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5619         rgctx invoke trampolines for x86.
5620
5621         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5622         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5623         (mono_arch_get_vcall_slot): Simplify this.
5624
5625 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5626
5627         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5628         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5629
5630 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5631
5632         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5633         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5634
5635         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5636
5637         * liveness.c (visit_bb): Remove a needless assert.
5638
5639 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5640
5641         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5642         full aot support to the arch specific code.
5643
5644         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5645
5646         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5647
5648         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5649         
5650         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5651         collect information about the delegate invoke impl trampolines.
5652
5653         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5654         to save trampolines during full-aot mode.
5655
5656         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5657         creation function which returns a trampoline which sets the rgctx
5658         argument.
5659         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5660         wrapper if possible.
5661         (mono_delegate_trampoline): Ditto.
5662
5663         * mini.c (mono_jit_runtime_invoke): Ditto.
5664
5665         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5666         
5667         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5668
5669         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5670         
5671 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5674         just setting the opcode to OP_NOP.
5675
5676 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * mini.c (mini_method_compile): Put the last change inside an 
5679         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5680         
5681         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5682         and extend live ranges to cover the whole method when using xdb.
5683
5684         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5685         do it in the trampolines.
5686
5687         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5688         needed.
5689
5690         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5691         
5692         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5693         call code in full-aot mode since IMT is disabled there.
5694         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5695         new JIT no longer has that restriction.
5696
5697         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5698
5699         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5700         a more compact format.
5701         (mono_aot_wrapper_name): New function to return a unique name for a
5702         wrapper method, also used by the AOT runtime.
5703
5704         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5705         aot-compiler.c.
5706
5707         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5708         when a ICollection<T> etc is encountered.
5709         (add_generic_instances): Process method arguments/locals too.
5710         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5711         trampoline names.
5712
5713         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5714         
5715 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5718
5719         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5720
5721         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5722         representing the result of the decomposition. Nullify instructions
5723         instead of setting them to OP_NOP since nops can't have registers
5724         set.
5725
5726 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5729         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5730         info. Strip 'mapping symbols' on ARM.
5731
5732         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5733         
5734         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5735         this with the native genmdesc.
5736
5737 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5738
5739         * aot-runtime.c:  Fixing the MSVC build.
5740
5741         Code is contributed under MIT/X11 license.
5742
5743 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5746         JITted code depends on it.
5747
5748 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5749
5750         * aot-compiler.c: Use new MonoGenericParam accessors.
5751
5752 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5753
5754         Reduce memory usage and improve correctness wrt MonoGenericParam
5755         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5756         handing.  Avoid allocating MonoGenericParams, but use the ones in
5757         the container itself.
5758
5759 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5760
5761         * tasklets.c: Return exceptions in the out argument.
5762
5763 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5764
5765         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5766         opcode. Use pointer types in more places instead of casting them to 
5767         integers.
5768
5769         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5770         optimizations.
5771         (mono_llvm_optimize_method): New helper function to optimize a method.
5772
5773         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5774         widening code so it could be called from more places.
5775         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5776         code paths in the call opcodes.
5777
5778 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5779
5780         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5781
5782 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * dwarfwriter.c: Use _ to separate class name 
5785         components as gdb can't handle '.'. Represent reference variables
5786         as 'class <NAME>&'.
5787         
5788         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5789
5790         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5791         
5792         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5793
5794         * gc-test.cs: New file with GC stack marking tests.
5795         
5796         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5797         negative numbers for vfp.
5798
5799         * basic-float.cs: Add a test.
5800         
5801 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5802
5803         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5804
5805 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5806
5807         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5808         part of tasklet/continuation support.
5809
5810 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5813         amd64 opcodes inside an ifdef.
5814
5815         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5816         of complex types.
5817         
5818         * dwarfwriter.c (emit_type): Emit the class info for classes.
5819
5820 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5821
5822         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5823
5824         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5825
5826         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5827
5828         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5829
5830 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5833
5834         * mini-llvm.c: Update comments.
5835
5836         * mini.h (COMPILE_LLVM): New macro.
5837
5838         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5839
5840         * ssa.c (mono_ssa_compute): Ditto.
5841         
5842         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5843         the unwind ops from a DWARF FDE.
5844
5845         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5846         methods by extracting the dwarf unwind ops from the unwind info generated
5847         by LLVM.
5848         
5849         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5850         calls.
5851
5852         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5853         addressing modes.
5854
5855 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * Makefile.am (llvm_sources): Enable this.
5858
5859         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5860         failing back to the JIT if something cannot be handled.
5861
5862         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5863         compiling with LLVM.
5864
5865         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5866         compiling with LLVM.
5867
5868         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5869         compiling with LLVM.
5870
5871         * mini-ops.h: Add a few opcodes needed by LLVM.
5872
5873         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5874         has no unwind info.
5875
5876         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5877         backend.
5878
5879         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5880
5881         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5882
5883 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5884
5885         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5886         ridiculously large methods.
5887
5888 2009-03-31  Martin Baulig  <martin@ximian.com>
5889
5890         * debug-debugger.c (debugger_remove_breakpoint): Call
5891         mono_debugger_remove_class_init_callback ().
5892
5893 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5894
5895         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5896         right before emitting code, not at the start.
5897
5898         * mini.c (mono_postprocess_patches): Extract this into a separate function
5899         from mono_codegen ().
5900
5901         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5902         byref types correctly.
5903
5904 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5905
5906         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5907         by the last change.
5908
5909 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5910
5911         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5912         indirect calls, this avoids problems where get_vcall_slot () would get
5913         confused by the native code for the instruction preceeding the call.
5914         (mono_arch_get_vcall_slot): Simplify this.
5915         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5916
5917         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5918         register allocator now seems to depend on them instead of the data in
5919         cpu-<ARCH>.md.
5920
5921         * mini.c (mini_method_compile): Throw the correct type of exception if
5922         mono_method_get_header () fails because of a loading error.
5923
5924 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5925
5926         * mini.c (mini_method_compile): Clear the loader error if the method
5927         header cannot be decoded.
5928
5929         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5930         interface methods on proxies correctly.
5931
5932         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5933         this argument for vtype methods. Add precise liveness info for arguments.
5934
5935         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5936         LIVERANGE_START/END opcodes.
5937
5938         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5939         for arguments and values in registers.
5940
5941 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5942
5943         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5944         return a valuetype. Fixes #487518.
5945
5946         * iltests.il: Add a test.
5947         
5948         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5949
5950         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5951         closed over a null reference correctly.
5952
5953 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5954
5955         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5956
5957 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5958
5959         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5960         allocated to the same registers as fixed sregs.
5961
5962 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5963
5964         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5965         ATOMIC_CAS_IMM ops.
5966
5967         * method-to-ir.c: Handle more cases for
5968         Interlocked.CompareExchange.
5969
5970         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5971         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5972         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5973
5974 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * aot-runtime.c (decode_method_ref): Fix a warning.
5977
5978         * unwind.c (mono_unwind_frame): Ditto.  
5979
5980 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5981
5982         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5983         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5984
5985         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5986         fix the handling of large values in the ALU_PC_G0_NC relocation.
5987
5988 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5989
5990         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5991
5992 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5993
5994         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5995         ops.
5996
5997 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5998
5999         * method-to-ir.c: MINI_OP3 needs a comma.
6000
6001         * method-to-ir.c, mini.h, mini.c: Remove
6002         mono_init_op_sreg_counts ().
6003
6004 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
6005
6006         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
6007         OP_JMP.
6008         
6009         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
6010         assertion.
6011
6012         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
6013
6014         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
6015         code somewhat.
6016
6017 2009-03-21  Mark Probst  <mark.probst@gmail.com>
6018
6019         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
6020         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
6021         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
6022         operations.
6023
6024 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * driver.c: Change location of gc_wrapper.h.
6027
6028         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
6029         inside finally clauses correctly. Fixes #485721.
6030
6031         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
6032         after the change above.
6033
6034         * exceptions.cs: Add a test.
6035         
6036 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6037
6038         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
6039
6040         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
6041         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
6042         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
6043
6044         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
6045         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
6046
6047 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
6048
6049         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
6050         Simplify logic for ensure_method_is_allowed_to_call_method. 
6051         Handle wrappers on callers.
6052
6053 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6054
6055         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6056         them don't run yet.
6057
6058         * basic-simd.cs: Fix the names of some test methods.
6059
6060 2009-03-18  Geoff Norton  <gnorton@novell.com>
6061
6062         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6063
6064 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6067
6068 2009-03-17  Jb Evain  <jbevain@novell.com>
6069
6070         * driver.c: remove now uneeded call to mono_gc_base_init before
6071         mono_profiler_load.
6072
6073 2009-03-17  Jb Evain  <jbevain@novell.com>
6074
6075         * dwarfwriter.c (token_handler): handle more cases.
6076
6077 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6078
6079         * method-to-ir.c: Remove more dead code (that was required only
6080         because of method_is_safe). Fix compiler warnings.
6081
6082 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6083
6084         * method-to-ir.c: Remove unneeded/useless method_is_safe
6085         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6086
6087 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6088
6089         * mini.c (mini_method_compile): Print the method been compiled with
6090         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6091         for people not familiar with the runtime.
6092
6093 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6096         a managed object which is later put into a GList. Return its class instead.
6097
6098         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6099         stack slots when using sgen.
6100
6101 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6104
6105 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6108         > so it works on the first vreg as well.
6109
6110 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6111
6112         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6113         trigger randomly.
6114
6115         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6116         
6117         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6118         implement GArray.
6119
6120 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6123         native->IL offset mapping.
6124
6125 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6128
6129         * basic.cs: Add a test.
6130
6131 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6132
6133         * mini-x86.c (mono_arch_output_basic_block): Use different
6134         registers in case the ones we want to overwrite are used by the
6135         other operand.  Fixes regression in #480807.
6136
6137 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6140
6141         * dwarfwriter.c (emit_line_number_info): The line number info for
6142         IL code was off by one. Fix that.
6143
6144         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6145         stack.
6146
6147 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6148
6149         Contributed under the terms of the MIT/X11 license by Steven
6150         Munroe <munroesj@us.ibm.com>.
6151
6152         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6153         Fixes #483462.
6154
6155 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6156
6157         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6158         as well.
6159
6160 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6163         the delegate ctor handling code. Fixes #482638.
6164         
6165         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6166         #481458.
6167
6168         * iltests.il.in: Add a test.
6169         
6170         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6171         mini-posix.c.
6172
6173 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6174
6175         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6176         is shared generic code, return the trampoline, even if the method
6177         has already been compiled.  Fixes #479763.
6178
6179         * mini.c, mini.h: New function
6180         mono_jit_find_compiled_method_with_jit_info() which is the same as
6181         mono_jit_find_compiled_method() but also returns the jit info.
6182
6183 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6184
6185         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6186         for methods which actually have one.  For all other methods, make
6187         sure the this argument var is live the whole method.
6188
6189         * mini.c (mini_method_compile): Every shared method has a
6190         this/vtable/mrgctx info.  Fixes #480807.
6191
6192 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6193
6194         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6195         generic/imt thunks where some entries branch through the vtable,
6196         while other entries branch directly.
6197
6198 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6201
6202         * mini-windows.c: Ditto.
6203         
6204         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6205         ctors.
6206
6207 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6210         down an assert.
6211
6212 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6213
6214         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6215         #481403.
6216
6217 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6218
6219         * exceptions-x86.c: Include debug-mini.h - fixes build.
6220
6221 2009-03-04  Martin Baulig  <martin@ximian.com>
6222
6223         * debug-mini.c: Clean up the exception API and add documentation.
6224         (mono_debugger_handle_exception): New public method; this is
6225         called when throwing an exception or encountering an unhandled one.
6226         (mono_debugger_call_exception_handler): Formerly known as
6227         mono_debugger_handle_exception(); this is used to tell the
6228         debugger that we're about to invoke an exception handler.
6229
6230 2009-03-04  Martin Baulig  <martin@ximian.com>
6231
6232         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6233         ../metadata/mono-debug-debugger.c; save and reset exception state.
6234
6235 2009-03-02  Martin Baulig  <martin@ximian.com>
6236
6237         * debug-mini.c: Moved the debugger exception handling here from
6238         ../metadata/mono-debug-debugger.c.
6239
6240         * debug-mini.h
6241         (MonoDebuggerExceptionAction): New exception typedef.
6242
6243         * debug-mini.c
6244         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6245
6246         * exceptions-amd64.c
6247         (mono_amd64_throw_exception): Use the new debugger exception
6248         handling code.
6249
6250         * mini-exceptions.c
6251         (mono_handle_exception_internal): Don't call
6252         mono_debugger_unhandled_exception() here.
6253
6254 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * mini.c aot-compiler.c: Update after the changes to 
6257         mono_marshal_get_runtime_invoke ().
6258
6259         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6260         Virtual generic methods might not have method->slot set, work around
6261         that.
6262
6263         * generics.cs: Add a test.
6264
6265 2009-03-02  Geoff Norton  <gnorton@novell.com>
6266
6267         * mini.c:
6268         * driver.c: Allow signal chaining of SIGFPE as well.
6269
6270 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6271
6272         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6273         this since it now receives the method not its generic context in the
6274         IMT reg.
6275
6276         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6277         generic/imt thunks where some entries branch through the vtable, while
6278         other entries branch directly.
6279
6280         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6281
6282         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6283         support for interface methods as well.
6284
6285         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6286         using the normal IMT thunks.
6287
6288         generics.cs: Add new tests.
6289         
6290         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6291         the generic inst to the generic imt thunks. This fixes AOT support, 
6292         improves consistency with the normal IMT thunks, and makes it easier to
6293         add support for interface generic virtual methods later.
6294
6295         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6296         
6297 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * driver.c (mono_set_signal_chaining): New public API function to enable
6300         signal chaining on POSIX platforms.
6301
6302         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6303         (si@lindenlab.com) to implement signal chaining. The original patch was
6304         contributed under the MIT X/11 license:
6305         https://bugzilla.novell.com/show_bug.cgi?id=318894
6306
6307 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6310         too until it can be made to run on amd64.
6311
6312 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6315         to  get_generic_context_from_code () + get_call_info () if possible.
6316
6317 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6320         suspend-on-sigsegv functionality.
6321
6322         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6323         to suspend when a native SIGSEGV is received. This is useful for debugging
6324         crashes which don't happen under gdb, since a live process contains more
6325         information than a core file.
6326
6327         * mini-exceptions.c (mono_print_thread_dump): Use 
6328         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6329
6330         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6331
6332         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6333         
6334         * basic-float.cs: Disable the tests which currently fail on amd64.
6335
6336         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6337         value to mono_arch_patch_callsite () to fix crashes.
6338         
6339         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6340
6341 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6344         nop code by patching the call address to point to the nullified class init
6345         trampoline, as the former does not seem to be safe on SMP machines.
6346
6347 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6348
6349         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6350         they were wrong.
6351
6352 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * basic-float.cs basic-calls.cs: Fix warnings.
6355
6356 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6357
6358         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6359         correct frame pointer in the LMF.  Should fix #478394.
6360
6361 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6362
6363         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6364
6365         * image-writer.c: Make the binary writer less verbose.
6366
6367 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6368
6369         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6370         are called from runtime invoke wrappers.
6371
6372 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6373
6374         * cpu-ppc.md (store_memindex): Increase the size of this.
6375
6376 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6377
6378         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6379
6380         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6381
6382         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6383         OP_LCONV_TO_R_UN.
6384
6385         Last fix for of #467201.
6386
6387
6388 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6389
6390         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6391
6392         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6393         and long_conv_to_r8_2:
6394
6395         Fixed part of #467201.
6396
6397 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6398
6399         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6400
6401         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6402         conversion to 32 bits.
6403
6404         * cpu-x86.md: Increase the size of int_conv_to_r4.
6405
6406         * basic-float.cs: Add a test for this.
6407
6408         Fixed part of #467201.
6409
6410 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6411
6412         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6413
6414         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6415         conversion to 64 bits.
6416
6417         * basic-float.cs: Add a test for this.
6418
6419         Fixed part of #467201.
6420
6421 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6424
6425         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6426         This behavior is compatible with MS.
6427
6428         * iltest.il.in: Add a test for this.
6429
6430         Fixed part of #467201.
6431
6432 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6433
6434         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6435
6436         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6437         change the precision of the value.
6438
6439         * cpu-x86.md: Define len for float_conv_to_r4.
6440
6441         * basic-float.cs: Add a test for this.
6442
6443         Fixed part of #467201.
6444
6445 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * mini.c: Adjust locking order to the new semantics where the loader lock
6448         comes first.
6449
6450 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6451
6452         * aot-runtime.c:
6453         * mini-amd64.c:
6454         * mini-arm.c:
6455         * mini-ia64.c:
6456         * mini-mips.c:
6457         * mini-ppc.c:
6458         * mini-sparc.c:
6459         * mini-trampolines.c:
6460         * mini-x86.c:
6461         * mini.c:
6462         * tramp-alpha.c:
6463         * tramp-amd64.c:
6464         * tramp-arm.c:
6465         * tramp-hppa.c:
6466         * tramp-ia64.c:
6467         * tramp-mips.c:
6468         * tramp-ppc.c:
6469         * tramp-s390.c:
6470         * tramp-s390x.c:
6471         * tramp-sparc.c:
6472         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6473
6474 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6477         as it is incorrect.
6478
6479 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6482         for cctors if needed.
6483
6484 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6485
6486         * mini-ppc.c: Fix build on Darwin.
6487
6488 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6491         version instead of 3 as valgrind doesn't like version 3.
6492
6493         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6494
6495         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6496         usable for hashing methods.
6497         (emit_extra_methods): Use the new hash to avoid putting every method in the
6498         same hash bucket.
6499
6500         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6501
6502         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6503         whenever a method ref could match a method.
6504         
6505         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6506         test to fail.
6507         
6508         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6509         methods refs.
6510
6511         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6512
6513         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6514         the encoding buffer.
6515
6516         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6517         mono_method_get_header () on inflated methods as an optimization.
6518
6519 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6520
6521         * ssa.c (fold_ins): Fix another crash if the instruction following the
6522         switch was optimized away.
6523
6524 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6525
6526         Contributed under the terms of the MIT/X11 license by Steven
6527         Munroe <munroesj@us.ibm.com>.
6528
6529         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6530
6531 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6534         around the mono_domain_alloc calls, it is now done by the functions
6535         themselves.
6536
6537         * aot-compiler.c (compile_method): Only add wrappers referenced by
6538         the method if compiling with full AOT.
6539         (mono_compile_assembly): Error out if --aot=full is specified on
6540         a platform where it is not supported.
6541
6542         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6543         on ARM too.
6544
6545         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6546         AOT support.
6547
6548         * aot-runtime.c (load_named_code): Handle 
6549         mono_arm_throw_exception_by_token.
6550
6551         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6552
6553         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6554         unaligned.
6555
6556         * Makefile.am (fullaotcheck): Exit if a test fails.
6557
6558         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6559         on ARM.
6560         (mono_compile_assembly): Handle the assembler failing.
6561
6562         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6563         accepting subsections of .bss.
6564
6565         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6566         was optimized away.
6567
6568         * aot-compiler.c: Remove some unused includes.
6569         
6570         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6571         now in MonoImageWriter.
6572
6573         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6574         code sequence which matches a non-virtual call. Fixes #472654.
6575
6576 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6577
6578         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6579         xdebug code.
6580         
6581         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6582         use the image/dwarf writers directly.
6583
6584         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6585         field.
6586
6587         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6588         MonoDwarfWriter.
6589
6590         * image-writer.h: Fix some typos.
6591
6592         * dwarfwriter.h dwarfwriter.c: New files.
6593         
6594         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6595         separate module.
6596
6597         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6598         argument to return unwind info.
6599
6600         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6601
6602         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6603         
6604         * aot-runtime.c (decode_method_ref): Add a case for 
6605         MONO_AOT_METHODREF_WRAPPER_NAME.
6606
6607         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6608         for AOT.
6609
6610         * aot-compiler.c (encode_method_ref): Use the new constants.
6611
6612         * aot-runtime.c (decode_method_ref): Ditto.
6613
6614         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6615         be compiled, not the icall itself.
6616
6617 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6618
6619         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6620         using decode_method_ref ().
6621
6622         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6623         convert it to an in32. Fixes #475859.
6624
6625         * arrays.cs: Add a test.
6626
6627 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6630         OP_LCONV_TO_U2.
6631
6632         * basic-long.cs: Add a test.
6633
6634 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6635
6636         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6637         remove the frame pointer in leaf methods which don't receive any
6638         arguments, don't throw exceptions and don't do dynamic stack
6639         allocations.
6640
6641 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6642
6643         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6644         the fail_tramp changes. Hopefully fixes #475132.
6645
6646 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6647
6648         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6649         instead of mono_metadata_signature_dup_full.
6650
6651 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6652
6653         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6654         for processing jump tables. Fixes #473787.
6655
6656 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6657
6658         * mini-generic-sharing.c: mini_method_get_context() just calls
6659         mono_method_get_context_general() now.
6660
6661         * mini.c, mini.h: Moved get_object_generic_inst(),
6662         construct_object_context_for_method() and
6663         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6664
6665 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6666
6667         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6668         basic block fell through to its successor bblock without a branch. Fixes
6669         #474718.
6670
6671         * iltests.il.in: Add a test.
6672         
6673         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6674         (can_encode_patch): We can now handle arrays of generic parameters and
6675         array methods.
6676
6677         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6678
6679         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6680         the AOT file to avoid some #ifdefs in aot-runtime.c
6681
6682         * mini.h: Bump AOT file format version.
6683
6684 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * Makefile.am (fullaotcheck): Make this run the tests.
6687
6688         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6689
6690 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6691
6692         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6693         individually.  Fixes #473482.
6694
6695 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6696
6697         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6698
6699 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6700
6701         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6702         (mono_compile_assembly): Hush compile warnings about
6703         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6704         code path.
6705
6706 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6707
6708         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6709
6710         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6711
6712         * aot-compiler.c: Fix arm support.
6713
6714         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6715         img_writer_emit_unset_mode () function.
6716
6717         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6718         (mono_unwind_get_dwarf_pc_reg): Ditto.
6719
6720         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6721         Move almost all platform specific code to a set of arch_ functions, 
6722         and document them to ease porting.
6723         
6724         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6725
6726         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6727
6728         * aot-compiler.c: Extract the image writing functionality into a separate
6729         module to reduce the size of this file.
6730
6731 2009-02-09  Geoff Norton  <gnorton@novell.com>
6732
6733         * mini-s390.c: Fix the signature of emit_sig_cookie.
6734
6735 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6736
6737         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6738
6739         * aot-runtime.c (is_shared_got_patch): Ditto.
6740
6741         * aot-runtime.c (load_named_code): Cope with the fact that 
6742         decode_got_entry () won't decode the patch fully if its corresponding got
6743         entry is already filled.
6744         
6745         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6746         Initialize *ji.
6747         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6748
6749         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6750         as the moving pointer instead of 'buf' for consistency with the rest of the
6751         codebase.
6752         (mono_arch_create_monitor_exit_trampoline): Ditto.
6753
6754         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6755         generic_class_init trampolines.
6756         (add_generic_class): Extract some code from add_generic_instances () into a
6757         separate function so it can be called from other places too.
6758         (compile_method): Call add_generic_class () for the classes of inflated methods
6759         referenced by the method.
6760         (can_encode_patch): Allow references to generic parameters.
6761
6762         * aot-runtime.c: Add support the patches required by the new trampolines.
6763         
6764         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6765         support.
6766
6767         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6768         full-aot support.
6769
6770         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6771         this from get_throw_pending_exception, make the signature full aot compatible.
6772
6773         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6774
6775         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6776
6777         * exceptions.cs: Add a test.
6778
6779 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6782         use the DWARF_DATA_ALIGN constant instead.
6783
6784         * exception-<ARCH>.c: Update after the above change.
6785
6786         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6787         dwarf unwinder.
6788
6789         * mini-arm.c: Enable the dwarf unwinder.
6790
6791         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6792         instead of mono_class_setup_vtable ().
6793
6794 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6795
6796         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6797         dwarf unwinder.
6798
6799         * mini-x86.h: Enable the dwarf unwinder.
6800
6801 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6802
6803         Fix mcs/tests/test-7.cs
6804         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6805         2009-02-03.
6806
6807 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6808
6809         * mini.c (print_jit_stats): Remove some unused statistics.
6810
6811 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6812
6813         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6814
6815 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6816
6817         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6818         the method we get from mono_object_get_virtual_method() because
6819         that function does it properly, now.
6820
6821 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6824         opcodes. Fixes #472775.
6825
6826 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6827
6828         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6829         fact that mono_find_jit_info() sometimes returns the context
6830         corresponding to the jit info in new_ctx.  Fixes #472600.
6831
6832 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6833
6834         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6835         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6836         klass->enum_basetype directly.
6837
6838         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6839         enum subtypes.
6840
6841         * unwind.c: Avoid 0 sized arrays.
6842
6843 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6844
6845         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6846         size on systems with 64k pages. Fixes #471389.
6847
6848 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6849
6850         Contributed under the terms of the MIT/X11 license by Steven
6851         Munroe <munroesj@us.ibm.com>.
6852
6853         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6854         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6855         necessary.
6856
6857 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6858
6859         Contributed under the terms of the MIT/X11 license by Steven
6860         Munroe <munroesj@us.ibm.com>.
6861
6862         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6863         comparison fix.
6864
6865         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6866         The trampoline can be longer on PPC64.
6867
6868 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6869
6870         Contributed under the terms of the MIT/X11 license by Steven
6871         Munroe <munroesj@us.ibm.com>.
6872
6873         * mini-ppc.c: Compiler warning fixes and trivial code
6874         simplifications.
6875
6876 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6877
6878         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6879         ins->dreg which could be a hardware register, not a vreg.
6880
6881         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6882         
6883         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6884         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6885
6886         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6887         
6888         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6889         ->dreg, that is not the vreg we are looking for.
6890
6891         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6892
6893         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6894         LIVERANGE_END.
6895
6896         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6897         strange crashes.
6898
6899 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6900
6901         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6902
6903         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6904         the line diff is 0.
6905
6906         * aot-compiler.c: Add xdebug support on x86.
6907
6908         * unwind.c: Add x86 support.
6909         
6910         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6911         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6912
6913         * mini.c (mini_method_compile): Ditto.
6914         
6915         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6916         the variable index.
6917
6918         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6919         which mimic .push_section/.pop_section in GAS.
6920         
6921         * aot-compiler.c: Emit precise live range information for variables.
6922
6923         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6924
6925         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6926         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6927         them.
6928
6929         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6930         the live ranges of variables.
6931
6932         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6933         of the variable in terms of native offsets.
6934
6935 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6936
6937         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6938         
6939 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6940
6941         Contributed under the terms of the MIT/X11 license by Steven
6942         Munroe <munroesj@us.ibm.com>.
6943
6944         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6945         order (offset then base reg) for ppc_load_multiple_regs.
6946         (emit_save_saved_regs) Correct operand order for
6947         ppc_store_multiple_regs.
6948         (mono_arch_get_call_filter): Correct operand order for
6949         ppc_load_multiple_regs.
6950
6951         * mini-ppc.c (emit_memcpy): Fix operand order for
6952         ppc_load_reg_update and ppc_store_reg_update.
6953         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6954         (mono_arch_emit_epilog): Correct operand order for
6955         ppc_load_multiple_regs.
6956
6957         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6958         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6959
6960 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6961
6962         * cpu-ppc64.md: Fixed storer4_memindex length.
6963
6964 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6965
6966         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6967         line number info.
6968         
6969         * aot-compiler.c (emit_line_number_info): Optimize this.
6970
6971 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6974         
6975         * aot-compiler.c: Add debug info for methods without debug info by
6976         emitting an IL file and having the line number info referencing that file.
6977
6978         * aot-compiler.c: Optimize the size of the generated line number info.
6979
6980         * aot-compiler.c: Emit line number info in xdebug mode.
6981
6982         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6983         million arguments.
6984
6985 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6986
6987         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6988
6989         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6990         is used.
6991
6992 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6993
6994         * basic-calls.cs: Test for the weird crash found on arm.
6995         
6996 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6997
6998         * cpu-arm.md: Increase the size of storer8_membase_reg and
6999         loadr8_membase_reg to 24 bytes to accomodate the extra add.
7000
7001         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
7002         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
7003         reg to LR otherwise we'll be loading/storing from just the offset.
7004
7005 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7006
7007         Question: if we are storing gint32's inside the "*native_offset",
7008         should we change the signature to "gint32 *native_offset" to
7009         ensure that we do not have type definition problems?
7010         
7011         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
7012         an int * as this is what the other function expects, causes
7013         problems with Freescale's compiler that defined int32_t to be a
7014         long and makes int incompatible 
7015
7016 2009-01-30  Miguel de Icaza  <miguel@novell.com>
7017
7018         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
7019         filename conflict with bjam.
7020
7021 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7022
7023         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
7024         as it might use decomposed ops.
7025
7026 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7027
7028         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
7029
7030         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
7031         is defined.
7032
7033         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
7034
7035         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
7036         offsets.
7037
7038         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
7039         way registers are stored in MonoContext on arm.
7040
7041         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
7042         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
7043
7044         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
7045
7046         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
7047
7048         * mini.c (mini_init): Register mono_isfinite.
7049
7050         * jit-icalls.c (mono_isfinite): New jit icall.
7051
7052         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7053         
7054         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7055         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7056         the parent frame.
7057
7058 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7059
7060         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7061         separate frame and stack pointers, so we must use FP to find the register
7062         spill area.
7063         The FP reg is retrieved from the MonoContext::regs array.
7064
7065 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7068         as FPA requires it.
7069
7070 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7071
7072         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7073         return R4 and R8 when not running under softfloat.
7074
7075         Fixes basic-calls.exe
7076
7077 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7078
7079         * mini-arm.c: Implement some overflow opcodes.
7080
7081 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7082
7083         * ssa.c: handle another alloca.h
7084
7085         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7086         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7087         MONO_ARCH_USE_SIGACTION. 
7088
7089         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7090         capability defines.
7091
7092         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7093
7094         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7095         PPC targets as sigaction does not exist on all platforms, define
7096         this on a per-platform basis.
7097
7098         Instead of erroring out if the platform is not defined, include
7099         mini-ppc-os.h, and expect that the OS specific setting provides
7100         the required information.   
7101
7102 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7103
7104         * aot-compiler.c: Fix --enable-minimal=aot.
7105
7106 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7109         previous change.
7110
7111 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7112
7113         * exceptions-arm.c: Fix warnings.
7114
7115         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7116         ARM.
7117
7118         * mini-x86.c: Fix --enable-minimal=jit build.
7119
7120         * mini.c: Really fix --enable-minimal=jit build.
7121         
7122         * mini.c (construct_object_context_for_method): Move this outside
7123         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7124
7125         "Backported" of r124984 from 2.0 branch.
7126         
7127         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7128
7129         "Backport" of r124977 + r124978 from 2.0 branch.
7130         
7131         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7132         to avoid calling mono_exception_from_token () from the throw trampoline.
7133         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7134         for throwing corlib exceptions, this fixes full-aot support for corlib
7135         exceptions.
7136
7137         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7138
7139 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7140
7141         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7142         part of the changes to split the code in mini into operating
7143         system specific files.
7144
7145         This patch was done by copying mini.c to the respective files to
7146         preserve SVN history.
7147
7148 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7149
7150         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7151
7152 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7155         remoting-invoke-with-check wrappers of shared methods.
7156
7157         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7158
7159 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7160
7161         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7162         optimization if the top of stack is the last instruction in the
7163         bblock.  Otherwise it might have been used after its definition.
7164         Fixes #469742.
7165
7166 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7169         method as well when get_vcall_slot () fails to match a code sequence.
7170
7171         * mini-arm.c: Fix the android build, which doesn't have
7172         __aeabi_read_tp.
7173
7174 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7175
7176         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7177         the s390x build.
7178
7179 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7180
7181         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7182
7183 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7184
7185         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7186         and put its id into jinfo->used_regs. This is only used on amd64,
7187         which is currently the only platform generating unwind info.
7188
7189         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7190         the dwarf unwinder. This is required to correctly handle async exceptions
7191         like thread abort and stack overflows, which can happen while a method
7192         is in the middle of its prolog or epilog.
7193         
7194         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7195         the unwind info belonging to an AOTed method.
7196
7197         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7198         into cfg->unwind_ops.
7199         
7200         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7201
7202         * mini.c (mini_init): Call mono_unwind_init ().
7203         (mini_cleanup): Call mono_unwind_cleanup ().
7204
7205         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7206         unwind info to be shared between methods.
7207
7208         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7209         saved in the LMF.
7210
7211         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7212         get_throw_pending_exception () to avoid initialization races.
7213
7214         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7215         mono_arch_exceptions_init () function.
7216
7217         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7218
7219 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7220
7221         * mini.c (mono_get_domain_intrinsic): New helper function.
7222         (mono_get_thread_intrinsic): Ditto.
7223
7224         * mini-arm.c mini-ia64.c: Use the new helper functions.
7225         
7226         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7227         the last constrained_call change, since it is needed in the non-AOT
7228         case as well.
7229
7230         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7231         
7232         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7233         mono_get_lmf_addr () on arm eabi linux.
7234
7235 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7238         code sequence which matches a non-virtual call.
7239
7240 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7241
7242         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7243         stack pointer (r1).
7244
7245 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7246
7247         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7248         runtime-invoke wrappers, since they are also shared based on signature.
7249
7250 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7251
7252         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7253         info from the (correct) context.
7254
7255 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7258         
7259         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7260         using dwarf unwinding info. Not yet used.
7261
7262         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7263
7264 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7265
7266         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7267         descriptors.
7268
7269         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7270         special case and handle mono_arch_delegate_invoke_impl() returning
7271         function descriptors.
7272
7273         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7274         trampolines return function descriptors, too.
7275
7276 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7277
7278         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7279         out_of_line optimization.
7280
7281 2009-01-21  Martin Baulig  <martin@ximian.com>
7282
7283         * mini.h
7284         (MonoCompile): Added `disable_deadce_vars' to disable removing
7285         unused variables.
7286
7287         * mini.c
7288         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7289         inside the debugger.
7290
7291         * liveness.c (mono_analyze_liveness): Don't remove any unused
7292         variables if `cfg->disable_deadce_vars' is set.
7293
7294 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7295
7296         * method-to-ir.c: Only apply exception constructor optimization if
7297         the the method actually belongs to an exception class.  Fixes
7298         #467456.
7299
7300 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7303         change inside a #ifdef __mono_ppc64__.
7304
7305         * aot-compiler.c (compile_method): Remove the previous limitation.
7306
7307         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7308         on type variables in AOTed code.
7309         
7310         * aot-compiler.c (compile_method): Skip generic methods having type 
7311         constraints on their generic parameters.
7312
7313         * aot-compiler.c (compile_method): Check for methods which cannot be
7314         encoded inside RGCTX_FETCH patches as well.
7315
7316         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7317         build.
7318
7319 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7320
7321         * method-to-ir.c: Force the vtable variable in shared generic code
7322         for the case that they might show up on a stack trace where they
7323         are needed.
7324
7325         * mini-exceptions.c: Save and use generic sharing info as well as
7326         IP in stack traces to resolve shared generic instantiations.
7327
7328 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7331         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7332
7333 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7334
7335         * method-to-ir.c: Do generic sharing for array constructors.
7336
7337 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7338
7339         * mini-exceptions.c (mono_print_thread_dump): Add information
7340         about the thread state using wapi_current_thread_desc.
7341
7342 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7343
7344         * basic-simd.cs: Tests for the new constructors. 
7345
7346 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7347
7348         * mini-ops.h: Added OP_EXPAND_*
7349
7350         * cpu-x86.md: Same.
7351
7352         * mini-x86.c (mono_arch_output_basic_block): Same.
7353         
7354         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7355
7356 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * iltests.il.in: Add a test for #467385.
7359
7360 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7361
7362         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7363         thread been cleaned up is not the same currently in execution.
7364
7365         Fixes appdomain-unload crashes on windows, osx and linux variants
7366         without the __thread keyword.
7367
7368 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7371         (koush@koushikdutta.com). Implement this for android.
7372
7373         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7374         begins with a digit.
7375
7376         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7377         mono_marshal_get_write_barrier ().
7378
7379 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7382         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7383         that pass them on a register pair.
7384
7385         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7386         test was crashing due to that.
7387
7388 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7389
7390         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7391         trampoline code. Include ucontext.h only if available.
7392
7393 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7394
7395         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7396         and doesn't check whether it's sharable, like it was before
7397         removing the shared generics hash.  This brings IronPython
7398         performance back to what it was before that change.
7399
7400 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7401
7402         * method-to-ir.c: Handle delegate invocation optimization earlier,
7403         otherwise it would be handled (much more slowly) by the
7404         final/sealed optimization.
7405
7406 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7409         domain is not set. Fixes #465864.
7410
7411 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7412
7413         * method-to-ir.c: Don't stop sharing of generic methods with catch
7414         clauses - we already handle those.
7415
7416 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7417
7418         * mini.c, mini.h: lookup_generic_method() is now
7419         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7420         making the shared_generics_hash obsolete.
7421
7422 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7423
7424         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7425         use the red zone.  Make room on the stack first and then use it,
7426         not the other way around.
7427
7428 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7429
7430         * mini.c (mini_init): Call mono_xdebug_init ().
7431
7432         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7433
7434 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7437
7438         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7439         trampolines.
7440
7441         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7442         debug+unwind info for trampolines.
7443
7444         * mini.c (mono_create_unwind_op): New helper function.
7445
7446         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7447
7448 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * aot-compiler.c: Fix the build.
7451
7452 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7453
7454         * Makefile.am: Update dtrace-prelink.sh location.
7455
7456 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7459         optimization. Fixes #464520.
7460
7461 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7462
7463         * mini-amd64.c : Adding code to save/restore non-volatile registers
7464            on Winx64.
7465
7466         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7467           registers on Winx64.
7468
7469         Contributed under MIT/X11 license.
7470
7471 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7474         __GNUC_MINOR__ which can break when the major version changes.
7475
7476 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7479
7480 2009-01-07  Geoff Norton  <gnorton@novell.com>
7481
7482         * helpers.c:  Allow mono -v -v -v to work on darwin.
7483
7484 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7485
7486         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7487           pattern. 
7488
7489         Contributed under MIT/X11 license.
7490
7491 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7494         instead of directly accessing type->data.klass. Fixes #462016.
7495         (mono_allocate_stack_slots_full): Ditto.
7496
7497         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7498         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7499
7500         * aot-compiler.c (emit_plt): Fix ARM build.
7501
7502 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7503
7504         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7505         
7506         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7507         change.
7508
7509         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7510         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7511         #463357.
7512
7513         * iltests.il.in: Add a regression test.
7514
7515 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7516
7517         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7518
7519 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7520
7521         * basic-simd.cs: Add a regression test for #462457.
7522
7523 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * mini-ops.h: Add a definition of XPHI.
7526
7527         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7528
7529         * ssa.c (op_phi_to_move): Handle XPHI.
7530
7531         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7532
7533         Fixes #462457
7534
7535 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7536
7537         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7538
7539 2008-12-31  Geoff Norton  <gnorton@novell.com>
7540
7541         * mini-ppc.c: The prolog size allocated can be too small for darwin
7542         ppc32 under certain circumstances.  Also fix a small logic bug.
7543
7544 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7547         while loading AOT methods.
7548
7549         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7550         since only the former is nulled out after a successful cast. This prevents
7551         crashes with rethrown exceptions when using --debug=casts.
7552
7553 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7554
7555         * mini.h: New macro for checking whether a method is final,
7556         i.e. whether the method or its class is marked final.
7557
7558         * method-to-ir.c: Use the new macro for all final-checks
7559         consistently.  Fixes the crash in the System.ServiceModel tests.
7560
7561 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7562
7563         * mini-exceptions.c (get_exception_catch_class): Corrected another
7564         overly strict assertion.
7565
7566 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7567
7568         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7569         Clobbering it is not allowed because the caller might use it as
7570         the vtable register in the interface call.
7571
7572 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7573
7574         * mini-exceptions.c (get_exception_catch_class): Corrected an
7575         overly strict assertion.
7576
7577 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7578         
7579         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7580
7581         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7582
7583         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7584
7585         * cpu-mips.md: correct lengths for certain long_ opcodes.
7586
7587         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7588
7589         * 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().
7590         
7591 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7592
7593         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7594         
7595 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7596         
7597         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7598         
7599 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7602         next basic block.
7603         
7604 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7605
7606         * 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
7607
7608         * 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)
7609         
7610 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7611         
7612         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7613         
7614 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7615
7616         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7617         gshared code. Fixes #458947.
7618
7619         * generics.cs: Add a test.
7620
7621 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7622         
7623         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7624         
7625         * mini-mips.c: first pass n32 code generation.
7626
7627         * mini-mips.h: datatypes and defines for n32 support.
7628
7629         * exceptions-mips.c: first pass n32 code generation.
7630         
7631         * tramp-mips.c: first pass n32 code generation.
7632         
7633         * cpu-mips.md: add long_ opcodes.
7634         
7635 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7636
7637         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7638
7639         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7640         
7641         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7642         
7643         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7644
7645         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7646
7647         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7648
7649         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7650
7651         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7652
7653         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7654
7655 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7658
7659 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7660
7661         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7662
7663 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7664
7665         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7666         descriptors for helper functions directly in front of the code.
7667
7668 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7669
7670         * method-to-ir.c: Removed an unnecessary assertion.
7671
7672 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7673
7674         * method-to-ir.c: Merge SGEN changes from the old JIT.
7675
7676 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7677
7678         * driver.c (compile_all_methods_thread_main): Handle failure of
7679         mono_get_method ().
7680
7681 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7682
7683         * mini-ppc.c: Merged with mini-ppc64.c.
7684
7685         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7686
7687         * Makefile.am: Use the same sources for PPC and PPC64.
7688
7689         * mini-ppc64.c: Removed.
7690
7691 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7692
7693         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7694         code to mono_bb_is_fall_through.
7695         
7696         * branch-opts.c (mono_remove_critical_edges): Same.
7697
7698 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7699
7700         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7701         expect that an OP_BR_REG will be there.
7702
7703 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7704
7705         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7706         for the many branch ops. The original check miss OP_BR_REG.
7707
7708         Fixes #457574.
7709         
7710 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7711
7712         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7713
7714 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7715
7716         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7717         while holding the aot lock.
7718
7719 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7720
7721         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7722         
7723 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7724
7725         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7726           to release all runtime callable wrappers held by the runtime.
7727
7728         Contributed under MIT/X11 license.
7729
7730 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7731
7732         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7733           for Winx64.
7734
7735         Contributed under MIT/X11 license.
7736
7737 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7738
7739         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7740         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7741
7742 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7743
7744         * cpu-mips.md: fix ckfinite length
7745
7746         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7747         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7748         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7749         
7750 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7751
7752         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7753         
7754 2008-12-08  Geoff Norton  <gnorton@novell.com>
7755
7756         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7757         size by 8 bytes as well.
7758
7759 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7760
7761         * basic-simd.cs: Fix method names for Vector16b.
7762         
7763 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7764
7765         * basic-simd.cs: Fix method names for Vector16sb.
7766
7767 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7768
7769         * basic-simd.cs: Fix method names for Vector8us.
7770         
7771 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7772
7773         * basic-simd.cs: Fix method names for Vector8s.
7774         
7775 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7776
7777         * basic-simd.cs: Fix method names for Vector4ui.
7778
7779 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7780
7781         * basic-simd.cs: Fix method names for Vector2l.
7782
7783 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * basic-simd.cs: Fix method names for Vector2d.
7786
7787 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7788
7789         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7790         that are extension methods.
7791
7792 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * basic-simd.cs: Fix method names for Vector4f.
7795
7796 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7799         as such. Fixes #456669.
7800
7801 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7802
7803         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7804         
7805 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7806
7807         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7808         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7809         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7810         (mips_adjust_stackframe): handle FP spills
7811                 
7812         * mini-ops.h: add mips_mtc1_s2
7813         
7814         * cpu-mips.md: add mips_mtc1_s2
7815         
7816 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7817
7818         * unwind.c: New file, move the unwind info encoding functions here from
7819         aot-compiler.c, so they could be used at runtime too.
7820
7821 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7822
7823         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7824         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7825         
7826 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7827
7828         * mini-mips.c: cleanup warnings
7829         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7830         (mips_adjust_stackframe): handle case of taking the address of stack locals
7831         
7832 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7833
7834         * aot-compiler.c: Implement a few functions missing from the asm writer.
7835         (emit_method_code): Only write symbols for methods when using the bin
7836         writer, since the assembler can't deal with the characters in our method
7837         names.
7838
7839         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7840
7841         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7842         call.
7843
7844         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7845         a bit to also restore %rax.
7846
7847 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7848
7849         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7850
7851 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7854         arguments.
7855
7856 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7857
7858         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7859
7860         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7861         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7862
7863         * exceptions-ppc64.c: Removed.
7864
7865         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7866
7867 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7868
7869         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7870         tramp-ppc64.c.
7871
7872         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7873
7874         * tramp-ppc64.c: Removed.
7875
7876 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7877
7878         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7879         the TYPESPEC table.
7880
7881 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7882
7883         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7884
7885         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7886         mini-ppc.h instead of mini-ppc64.h.
7887
7888         * mini-ppc64.h: Removed.
7889
7890 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7891
7892         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7893         
7894         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7895         
7896 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7897
7898         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7899         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7900         code easier.
7901
7902 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7903
7904         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7905
7906 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7907
7908         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7909
7910 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7911
7912         * basic-simd.cs: Tests for operator == and != on Vector4f.
7913
7914 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7915
7916         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7917
7918         * simd-intrinsics.c: Kill useless enum.
7919
7920 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7921
7922         * cpu-mips.md: add long_conv_to_ovf_i4_2
7923         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7924
7925 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7926
7927         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7928         
7929         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7930
7931 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7932
7933         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7934         
7935 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * basic-simd.cs: Add tests for new methods.
7938
7939 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7940
7941         * simd-intrinsics.c: Add support for operator == and !=
7942         on Vector4(u)i.
7943
7944         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7945
7946 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7947
7948         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7949
7950 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7951
7952         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7953
7954         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7955         MONO_PATCH_INFO_ICALL_ADDR.
7956
7957         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7958
7959         * aot-compiler.c: Resurrect full-aot support.
7960
7961 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7962
7963         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7964         
7965 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7966
7967         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7968         
7969 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7970
7971         * basic-simd.cs: Fix tests to work under ppc.
7972         Remove tests for methods that will be removed.
7973
7974 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7975
7976         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7977         generic type (via a typedef or typeref) correctly.
7978
7979 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7982         diagnose an assertion failure.
7983
7984 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7985
7986         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7987         Fix trampoline size.
7988
7989         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7990         conversion opcodes are implemented natively instead via emulation.
7991
7992 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7993
7994         * cpu-mips.md: remove mips_xori
7995
7996         * mini-ops.h:  remove mips_xori
7997
7998         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7999
8000         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
8001         
8002         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
8003         
8004 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8005
8006         * cpu-mips.md: fix instruction lengths.
8007
8008         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
8009
8010         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
8011
8012         * mini-ops.h: fix slti / sltiu op profiles.
8013         
8014 2008-12-02  Martin Baulig  <martin@ximian.com>
8015
8016         * method-to-ir.c (mono_method_to_ir): Disable debugging
8017         information for the init locals block to make the debugger stop
8018         after all locals have been initalized.
8019
8020 2008-12-02  Martin Baulig  <martin@ximian.com>
8021
8022         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
8023         running inside the debugger.
8024
8025 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
8028         is enabled.
8029
8030         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
8031         alu->alu imm optimization which only shows if deadce is disabled.
8032
8033         * aot-compiler.c: Rename the function names for the binary and asm writers
8034         so they can coexist in the same process. Rework the xdebug code to use the
8035         asm writer. This avoids the need to call into the runtime to dump the
8036         debugging info. Add more debugging info for types.
8037
8038         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
8039
8040         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
8041         cpu description tables, they can't occur in cpu-<ARCH>.md.
8042
8043         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
8044         the stack in CEE_LDFLDA. Fixes #450542.
8045
8046         * generics.cs: Add a new test.
8047
8048 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
8049
8050         * mini-ops.h: updated MIPS opcodes
8051         * mini-mips.c: decompose long opts
8052         * mini-mips.h: decompose long opts
8053         
8054 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8055
8056         * cpu-mips.md: fix length on int_rem_un
8057         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8058         
8059 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8060
8061         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8062
8063         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8064
8065 2008-11-29  Martin Baulig  <martin@ximian.com>
8066
8067         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8068         mono_debug_using_mono_debugger() in addition to the
8069         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8070
8071 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8072
8073         * mini-ops.h: updated more MIPS opcodes
8074         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8075         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8076         
8077 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8078
8079         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8080
8081 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8082
8083         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8084         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8085         * mini-ops.h: correct selected mips opcode entries
8086         
8087 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8088
8089         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8090         make them work.
8091
8092 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8093
8094         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8095
8096 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8097
8098         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8099         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8100         * mini-mips.h: disable IMT
8101         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8102         
8103 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8104
8105         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8106
8107 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8108
8109         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8110
8111 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8114         consistency.
8115
8116 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8117
8118         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8119         for Set/GetVector aligned versions.
8120
8121 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * basic-simd.cs: Add tests for Get/SetVector.
8124
8125 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8126
8127         * mini.c: Removed g_slist_append_mempool().  Now in
8128         metadata/mempool.c.
8129
8130 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8131
8132         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8133         size properly and make the bounds check optional.
8134
8135         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8136         for SetVector and IsAligned.
8137
8138 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * mini.c: Remove unused mono_normalize_opcodes () function.
8141
8142 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8143
8144         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8145         using the new atomic add ops now.
8146
8147         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8148         add.
8149
8150 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8151
8152         * mini-ppc64.c: Several fixes.
8153
8154 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8155
8156         * cpu-mips.md: added jump_table
8157         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8158
8159 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8160
8161         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8162
8163 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8164
8165         * mini-ops.h: corrected a handful of MIPS opcodes.
8166
8167 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8168
8169         * aot-compiler.c: MIPS to use ELF writer
8170
8171 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8172
8173         * mini-codegen.c: remove MIPS specific assert.
8174
8175 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8176
8177         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8178         fixes.  PPC64 now passes most of the runtime regressions.
8179
8180 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8181
8182         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8183         volatile intervals a bit.
8184
8185 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8186
8187         * basic-long.cs: New test case.
8188
8189 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * mini.c (mini_method_compile): Disable globalra for large methods for 
8192         now.
8193
8194         * regalloc2.c (order_moves): Add fp support.
8195
8196         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8197         source bblock ends with an OP_BR_REG.
8198
8199         * ratests.cs: Add a new test.
8200
8201 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8202
8203         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8204         sharing.  PPC64 now passes generics.exe.
8205
8206 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8207
8208         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8209
8210 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8213         memory when mono_jit_info_table_find () can't find the method in the
8214         LMF case.
8215
8216         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8217         AOTed code too.
8218         
8219         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8220         writer too.
8221
8222 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8223
8224         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8225         Several fixes.  PPC64 now runs exceptions.exe and
8226         devirtualization.exe.
8227
8228 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8229
8230         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8231         arrays.exe and basic-math.exe.
8232
8233 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8234
8235         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8236         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8237
8238 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8239
8240         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8241
8242 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8243
8244         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8245
8246         * ir-emit.h: Move macros from method-to-ir.c to here.
8247
8248 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8249
8250         * mini-ops.h: Correct the long simd ops to use LREG.
8251
8252 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8255         
8256         * mini-ops.h: Correct the dreg type of a few long opcodes.
8257
8258         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8259         Add netbsd support.
8260
8261 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8262
8263         * mini-ppc.c: remove negative stack references in epilog
8264         for platforms that don't support the red zone.
8265
8266 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8267
8268         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8269         point regs.  Now PPC64 passes basic-calls.exe.
8270
8271 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8272
8273         * basic-simd.cs: Add tests for accessors of Vector2l.
8274
8275 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8276
8277         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8278
8279         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8280         
8281         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8282
8283 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8284
8285         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8286         PPC64 passes basic-long.exe.
8287
8288 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8289
8290         * decompose.c: Decompose carry and overflow add on PPC64 like on
8291         other 64 bit archs.  Don't decompose sub at all on PPC64.
8292
8293         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8294         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8295         basic-long.exe.
8296
8297 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8298
8299         * basic-simd.cs: Add tests for accessors of Vector2d.
8300
8301 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8302
8303         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8304
8305         * cpu-x86.md: Same.
8306
8307         * mini-x86.c (mono_arch_output_basic_block): Same.
8308         
8309         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8310
8311 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8312
8313         * basic-simd.cs: Add tests for accessors of Vector4f.
8314
8315 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8318
8319         * cpu-x86.md: Same.
8320
8321         * mini-x86.c (mono_arch_output_basic_block): Same.
8322         
8323         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8324
8325 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8326
8327         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8328
8329 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8330
8331         * mini-ops.h: Added OP_INSERTX_I4_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 Vector4i and Vector4ui.
8338
8339 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8340
8341         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8342
8343 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8344
8345         * simd-intrinsics.c: Enable setters for Vector16sb.
8346
8347 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8348
8349         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8350
8351         * cpu-x86.md: Same.
8352
8353         * mini-x86.c (mono_arch_output_basic_block): Same.
8354         
8355         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8356
8357 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8358
8359         * simd-intrinsics.c: Implement setter for Vector8us.
8360
8361 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8364         for dead variables.
8365
8366 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8367
8368         * mini-ppc.c: remove references to the red zone in the prolog
8369         (for systems that don't support it).
8370
8371 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8372
8373         * cpu-ppc64.md: Fixed a few instruction lengths.
8374
8375         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8376         now.
8377
8378 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8379
8380         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8381         basic.exe now.
8382
8383 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8386
8387 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8388
8389         * mini-ops.h: Added OP_INSERT_I2.
8390
8391         * cpu-x86.md: Same.
8392
8393         * mini-x86.c (mono_arch_output_basic_block): Same.
8394         
8395         * simd-intrinsics.c: Implement setter for Vector8s.
8396
8397         * simd-methods.h: Add the names of get setters of Vector8s.
8398
8399 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8400
8401         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8402         
8403         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8404         parameters.
8405
8406         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8407
8408 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8409
8410         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8411         for PPC64.  An empty program runs now.
8412
8413 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8416
8417         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8418         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8419         info for JITted code is emitted into a shared library, loadable into gdb.
8420
8421 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8422
8423         * Makefile.am: Changes to build PPC64.
8424
8425         * mini-arch.h: Include mini-ppc64.h on PPC64.
8426
8427 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8428
8429         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8430         in PPC code up to r119147.
8431
8432 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8433
8434         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8435         cpu-ppc64.md: Changes for PPC64.
8436
8437         Based on code submitted by andreas.faerber@web.de at
8438         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8439         X11/MIT license.
8440
8441 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8442
8443         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8444         cpu-ppc64.md: Copied from the corresponding PPC files from
8445         r118846.
8446
8447 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8448
8449         * mini-ops.h: Added OP_ROUND.
8450
8451         * cpu-x86.md: Added round.
8452
8453         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8454
8455         * basic-math.cs: Added test_0_round to test rounding.
8456
8457         Contributed under MIT/X11 license.
8458
8459 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8460
8461         * aot-compiler.c : Fix the Winx64 build.
8462
8463         Contributed under MIT/X11 license.
8464
8465 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8466
8467         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8468         in OP_EXTRACT_R8 to avoid possible stack corruption.
8469
8470 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8471
8472         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8473
8474         * cpu-x86.md: Added extract_r8.
8475
8476         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8477         
8478         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8479         a couple of OP_EXTRACT_I4.
8480
8481         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8482
8483         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8484
8485 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8486
8487         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8488         and not 4.1. 
8489
8490 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8493         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8494
8495         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8496         are not needed any more.
8497
8498         * mini.h: Remove the unused INS_LIST macros.
8499
8500         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8501         longer needed.
8502
8503         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8504         ir-emit.h.
8505
8506         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8507         mono_alloc_ireg () instead.
8508
8509         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8510         macros.
8511
8512         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8513         on amd64.
8514
8515         * aot-runtime.c (load_aot_module): Disable AOT when running under
8516         CAS.
8517
8518         * mini-amd64.h: Change the monitor fastpath defines to check for
8519         !PLATFORM_WIN32 so they work on *bsd too.
8520
8521         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8522
8523         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8524
8525         * mini.h (MonoCompile): Remove new_ir flag.
8526
8527         * regalloc.h regalloc.c: Remove unused code.
8528
8529         * cpu-*.md: Remove more unused opcodes.
8530
8531         * simple-cee-ops.h simple-mini-ops.h: Removed.
8532
8533         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8534         
8535 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8536
8537         * aliasing.h: Removed.
8538
8539         * *.c: Remove references to aliasing.h and inssel.h.
8540
8541         * mini.c: Remove additional unused functions.
8542
8543         * mini-ops.h cpu-*.md: Remove unused opcodes.
8544
8545 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8546
8547         Remove the old JIT code.
8548
8549         * inssel*.brg: Removed.
8550
8551         * ssa.c abcremoval.c aliasing.c: Removed.
8552
8553         * ssa2.c: Renamed to ssa.c.
8554
8555         * abcremoval2.c: Renamed to abcremoval.c.
8556
8557         * *.c: Removed all !cfg->new_ir code.
8558
8559         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8560         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8561
8562         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8563         
8564 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8565
8566         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8567         to simplify the code and cut back on the number of global symbols in the AOT
8568         file.
8569         
8570         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8571
8572 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8573
8574         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8575         with the got/got_info tables.
8576
8577         * mini.h: Bump AOT file format version.
8578         
8579         * unwind.h: New file, contains definitions for stack unwinding.
8580
8581         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8582         to cfg->unwind_ops.
8583         
8584         * aot-compiler.c: Generalize the emitting of unwind information to use the
8585         information in cfg->unwind_ops.
8586
8587         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8588
8589         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8590         AOT method frames. Enable writing symbols for methods by default.
8591
8592 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8593
8594         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8595         and make it work with vectors of element sizes 1, 2 and 4.
8596
8597         * simd-intrinsics.c: Enable getter for all vectors with element size
8598         1, 2 or 4.
8599
8600         * simd-methods.h: Add the names of other getters.
8601
8602         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8603
8604         * cpu-x86.md: Same.
8605
8606         * mini-x86.c: Same.
8607
8608 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8609
8610         * mini-ppc.h: portability fix.
8611
8612 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8613
8614         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8615         buggy and will overwrite it.
8616
8617 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8620         Use it to emit local symbols for all methods so AOTed methods show up with
8621         their full name in gdb/valgrind output.
8622
8623 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8624
8625         * mini-ppc.c: portability fixes.
8626
8627 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8628
8629         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8630         entries out of the if (!generic_shared...) code so it is always done.
8631         (mono_class_init_trampoline): Do the patching when running under valgrind
8632         too, newer versions of valgrind have no problems with it.
8633
8634 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8637         further sections.
8638
8639 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8640
8641         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8642         filters.
8643
8644 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8647
8648 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8649
8650         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8651
8652         * cpu-x86.md: Same.
8653
8654         * mini-x86.c: Same.
8655
8656         * simd-intrinsics.c: Same.
8657
8658 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8659
8660         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8661
8662 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8663
8664         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8665         to work with more Vector types.
8666
8667 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8668
8669         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8670         store the elemens directly instead of using and intermediate.
8671
8672 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8673
8674         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8675
8676         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8677         to preserve %eax for aot plt trampolines.
8678
8679         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8680         (encode_method_ref): Flag synchronized methods so they won't go through
8681         the AOT trampoline.
8682
8683         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8684         wrappers.
8685
8686         * cpu-ia64.md (jmp): Increase max length.
8687
8688 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8691         open generic classes.
8692
8693         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8694
8695         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8696         box+brtrue optimization since it causes test failures on x86.
8697
8698 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8701
8702         * cpu-x86.md: Same.
8703
8704         * mini-x86.c: Same.
8705
8706         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8707         for simd ctor values. 
8708
8709         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8710         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8711
8712 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8713
8714         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8715         LogicalRightShift.
8716
8717         * simd-instrincs.c: Same.
8718
8719         * basic-simd.cs: Same.
8720
8721 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * ratests.cs: Add more tests.
8724
8725         * regalloc2.c (add_spill_code): Handle more corner cases.
8726
8727 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8730         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8731         both the source an destination of an instruction.
8732
8733 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8734
8735         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8736         wapihandles.c: more portability changes.
8737
8738 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8739
8740         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8741         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8742         safe to execute in a signal handler and the kernel provides better
8743         the info in /proc/self/smaps. Avoid the assert on sigaction during
8744         cleanup.
8745
8746 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8749         do the bblock linking hack if it is actually needed.
8750
8751         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8752         up linking.
8753
8754         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8755         crash problem is fixed.
8756
8757         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8758         bblocks.
8759
8760         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8761         for catch clauses.
8762         (mini_method_compile): Set the starting value of next_vreg to 
8763         MAX_IREGS + MAX_FREGS when using globalra.
8764
8765         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8766         filter clauses with BB_EXCEPTION_HANDLER.
8767
8768         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8769
8770 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8771
8772         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8773         space for stdcall.  Fixes regressions on Win32.
8774
8775 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8776
8777         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8778         bblocks.
8779         (linear_scan): Remove an assert which doesn't seem to be needed.
8780
8781         * local-propagation.c (mono_local_deadce): Avoid a call to
8782         MONO_DELETE_INS which would screw up the instruction linking.
8783
8784         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8785
8786         * regalloc2.c: Upgrade to work the current JIT code.
8787
8788 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8791         case.
8792
8793         * aot-runtime.c: Remove some dead code.
8794
8795         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8796         consistency.
8797         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8798
8799         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8800         trampolines using sscanf since atoi doesn't work on large unsigned values.
8801
8802         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8803         Initialize code_size.
8804
8805 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8806
8807         * method-to-ir.c (mini_emit_inst_for_method): Make
8808         Interlocked.CompareExchange work for Int arguments on 32 bit
8809         archs, as well.
8810
8811 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8812
8813         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8814
8815 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8816
8817         * main.c Fix MSVC build.
8818
8819         Contributed under MIT/X11 license.
8820
8821 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8822
8823         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8824         alignment larger than 8 bytes are aligned correctly, too.
8825
8826         * mini.c: Honor the min_align field of MonoClass when laying out
8827         the stack.
8828
8829 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8830
8831         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8832
8833         * aot-compiler.c (emit_plt): Fix a warning.
8834         
8835         * aot-compiler.c: Implement ARM support in the binary writer.
8836
8837 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8838
8839         * basic-simd.cs: Add test for getter with byref arg.
8840         Fix the naming of a few tests.
8841         Add missing checks to a test.
8842
8843 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8844
8845         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8846
8847         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8848         most of the full-aot support for monitor enter/exit trampolines.
8849
8850         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8851         enter/exit trampoline creation functions.
8852
8853         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8854         make dist.
8855
8856 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8857
8858         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8859         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8860         implement the needed functionality without adding crap to the runtime.
8861
8862 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8863
8864         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8865         non-x86 builds.
8866
8867         * mini.c (mono_build_date): New global version holding the build date in
8868         string format.
8869         
8870         * Makefile.am (buildver.c): Generate a file containing the build date.
8871
8872         * main.c: Set the build date from the generated file.
8873
8874         * mini.c (mono_get_runtime_build_info): New helper function returning build
8875         information in a string format.
8876         
8877         * driver.c (mono_main): Print the build date in --version.
8878
8879         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8880         file when the bind-to-runtime-version option is used.
8881
8882 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8883
8884         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8885
8886 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8887
8888         * simd-methods.h: Rename prefetch methods.
8889
8890         * simd-intrinsics.c: Same.      
8891
8892 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8893
8894         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8895         sizes.
8896
8897 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * aot-compiler.c: Use the bundled elf header files instead of depending on
8900         the system one.
8901         
8902         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8903         mempool.
8904
8905         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8906         on every call.
8907
8908 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8909
8910         * cpu-x86.md: Add store nta ops.
8911
8912         * mini-ops.h: Same.
8913
8914         * mini-x86.c: Same.
8915
8916         * mini.h: Add an enum for simd prefetch modes.
8917
8918         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8919         of store. Use the changed code to support store nta.
8920
8921         * simd-intrinsics.c: Add prefetch ops for all vector types.
8922
8923 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8926         threads.
8927         
8928         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8929         names.
8930
8931         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8932         trampolines.
8933
8934 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8935
8936         * mini-x86.c: Fixed commit.
8937
8938 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8939
8940         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8941
8942 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8943
8944         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8945         and MONITOR_EXIT, for the ASM fastpaths.
8946
8947         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8948         available.
8949
8950         * mini.c, patch-info.h: Signature and patch infos for
8951         Monitor.Enter/Exit trampolines.
8952
8953         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8954
8955         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8956         Monitor.Enter/Exit ASM fastpath for Linux.
8957
8958 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8959
8960         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8961
8962         * objects.cs: Add a new test.
8963         
8964         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8965
8966         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8967         if MONO_LOG_LEVEL is set.
8968
8969         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8970
8971         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8972
8973         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8974         
8975         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8976         of file offsets. Align the sections belonging to the data segment to 
8977         PAGESIZE.
8978
8979 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8980
8981         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8982         elf.h. Port it to amd64.
8983
8984 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8985
8986         * driver.c: Enable SIMD by default.
8987
8988 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8989
8990         * cpu-x86.md: Add prefetch op.
8991
8992         * mini-ops.h: Same.
8993
8994         * mini-x86.c: Same.
8995
8996         * mini.h: Add an enum for simd prefetch modes.
8997
8998         * simd-methods.h: Add prefetch function names.
8999
9000         * simd-intrinsics.c: Add prefetch ops for all vector types.
9001
9002 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * aot-compiler.c (emit_bytes): Speed this up a little.
9005
9006 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * aot-compiler.c: Add JIT time etc. statistics.
9009         
9010         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
9011
9012         * mini.h (MonoCompile): Add 'got_offset' field.
9013
9014         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
9015         method_got_offsets array.
9016
9017         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
9018         wrappers.
9019
9020         * aot-compiler.c (compile_method): Add generic method instances referenced
9021         by the method to the list of methods to be compiled, this is required so if
9022         A<T> references B<T>, and another assembly references A<int>, then it will
9023         also get a copy of B<int>.
9024
9025         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
9026         when checking for monitor enter/exit.
9027
9028 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9029
9030         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
9031         for Monitor.Enter and Monitor.Exit if enabled.
9032
9033         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
9034         Solaris.
9035
9036 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
9037
9038         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
9039         of an OP_MOVE. Fixes #440046.
9040
9041         * basic-long.cs: Add a new test.
9042
9043 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9044
9045         * mini.h: Add synchronization note for the managed counter-part.
9046
9047         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
9048         returns the simd caps of the current cpu.
9049
9050 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
9051
9052         * basic-simd.cs: Remove Console.WriteLine.
9053
9054 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9055
9056         * basic-simd.cs: New tests for Vector2ul.
9057
9058 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9059
9060         * simd-intrinsics.c: Add new vector type Vector2ul.
9061
9062 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9063
9064         * basic-simd.cs: New tests for Vector2l.
9065
9066 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9067
9068         * cpu-x86.md: Add long version of most packed int ops.
9069
9070         * mini-ops.h: Same.
9071
9072         * mini-x86.h: Same.
9073
9074         * simd-intrinsics.c: Add new vector type Vector2l.
9075
9076 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9077
9078         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9079
9080         * simd-methods.h: Remove SN_op_BitwiseXor.
9081
9082 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9083
9084         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9085         alignment.
9086
9087 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9088
9089         * basic-simd.cs: Test for Vector2d.
9090
9091         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9092         value.
9093
9094 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9095
9096         * cpu-x86.md: Add double version of all packed float ops.
9097
9098         * mini-ops.h: Same.
9099
9100         * mini-x86.h: Same.
9101
9102         * simd-intrinsics.c: Add new vector type Vector2d.
9103
9104         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9105
9106         * simd-methods.h: Add Duplicate.
9107
9108 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9109
9110         * basic-simd.cs: Test for packing with signed saturation.
9111
9112 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9115         found in the TYPESPEC table.
9116
9117 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9120         too.
9121
9122         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9123
9124         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9125         instead of the RVA, since the RVA can be changed by tools like the cil 
9126         stripper.
9127
9128         * method-to-ir.c (mono_method_to_ir2): Ditto.
9129
9130         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9131         (deserialize_variable): Ditto.
9132
9133 2008-10-25  Martin Baulig  <martin@ximian.com>
9134
9135         * debug-mini.c (write_variable): Use
9136         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9137
9138 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9139
9140         * cpu-x86.md: Add unsigned variants of packd and packw.
9141
9142         * mini-ops.h: Same.
9143
9144         * mini-x86.h: Emit the right instruction for packd and packw.
9145         Add unsigned variants of packd and packw.
9146
9147         * simd-intrinsics.c: Packd and packw were used in place of their
9148         unsigned variants. Change that.
9149         Add intrinsics for (Signed)PackWithSignedSaturation.
9150
9151         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9152
9153 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9154
9155         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9156
9157 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9158
9159         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9160
9161         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9162
9163         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9164         sse instructions.
9165
9166         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9167
9168 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9169
9170         * method-to-ir.c, mini.c: Special casing for the synchronized
9171         wrapper for the ldtoken+GetTypeFromHandle case.
9172
9173 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9174
9175         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9176
9177         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9178         created/split bblocks.
9179
9180 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9181
9182         * mini-ops.h: Add packed signed mul high.
9183         
9184         * cpu-x86.md: Same.
9185
9186         * mini-x86.c (mono_arch_output_basic_block): Same.
9187
9188         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9189
9190         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9191
9192 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9193
9194         * basic-simd.cs: Tests for Vector16sb.
9195
9196 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9199
9200 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9201
9202         * mini-ops.h: Add packed signed min, max and compare greater.
9203         
9204         * cpu-x86.md: Same.
9205
9206         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9207         saturation.
9208
9209         * simd-methods.h: Add CompareGreaterThan.
9210
9211         * simd-methods.h: Remove CompareEquals.
9212
9213         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9214
9215         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9216
9217         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9218         CompareEqual.
9219
9220 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9221
9222         * basic-simd.cs: Fix tests due to change in the API.
9223
9224 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9227
9228 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9231
9232         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9233         inst_offset as this has invalid values for LDADDR.
9234
9235 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9236
9237         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9238
9239         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9240
9241 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9242
9243         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9244         for accessing field->data.
9245
9246 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9247
9248         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9249
9250 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9251
9252         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9253
9254         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9255
9256 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9257
9258         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9259         from the cfg mempool.
9260
9261 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9262
9263         * basic-simd.cs: Tests for new methods in Vector8us.
9264
9265 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9266
9267         * mini-ops.h: Add multiply and store high.
9268         
9269         * cpu-x86.md: Same.
9270
9271         * mini-x86.c (mono_arch_output_basic_block): Same.
9272
9273         * simd-methods.h: Same.
9274
9275         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9276         and CompareEqual.
9277
9278 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9279
9280         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9281         mono_class_setup_vtable ().
9282
9283         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9284         mono_class_get_vtable_entry () for accessing klass->vtable.
9285
9286         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9287
9288         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9289         found.
9290
9291         * method-to-ir.c (mono_save_token_info): Don't save references made from
9292         wrappers.
9293
9294         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9295         of generic instances.
9296
9297         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9298
9299 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9300
9301         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9302         OP_JMP depends on the method signature.  Calculate it properly.
9303
9304 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9305         
9306         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9307         called directly.
9308
9309         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9310         instances.
9311         (emit_extra_methods): Add another table mapping method indexes to 
9312         offsets in the extra_method_info table.
9313
9314         * mini.h: Bump AOT file format version.
9315         
9316         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9317         and mono_aot_get_method_from_token () into one function.
9318
9319 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9320
9321         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9322         separate counter.
9323
9324 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9325
9326         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9327         methods.
9328
9329         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9330         disable_aot.
9331
9332         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9333
9334         * mini.h: Bump aot file format version.
9335
9336         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9337         AOT file can contain native code for methods which are not in the METHOD
9338         table. Generate code for non-sharable generic instances of generic methods
9339         found in the METHODSPEC table.
9340         
9341         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9342         encoding generic type handles.
9343
9344         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9345         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9346
9347         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9348         macros + MONO_ADD_INS.
9349
9350         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9351         context as well.
9352
9353         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9354
9355         * mini.h: Bump aot file format version.
9356
9357         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9358
9359 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9360
9361         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9362         platforms, with definable stack alignment value.  Set to 16 now
9363         for all platforms.
9364
9365         * mini.c, mini.h, driver.c: Command line option for disabling
9366         stack alignment.
9367
9368 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9369
9370         * basic-simd.cs: Tests for new methods in Vector4ui.
9371
9372 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9373
9374         * mini-ops.h: Add packed int shuffle.
9375         
9376         * cpu-x86.md: Same.
9377
9378         * mini-x86.c (mono_arch_output_basic_block): Same.
9379
9380         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9381         extract mask, max, min, shuffle.
9382
9383         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9384
9385 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9386
9387         * basic-simd.cs: Tests for new methods in Vector8us.
9388
9389 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9390
9391         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9392         RuntimeTypeHandle, not a TypedReference.
9393
9394 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9395
9396         * simd-intrinsics.c: remove relocations.
9397
9398 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9399
9400         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9401         optimizations from the x86 backend.
9402
9403 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9404
9405         * simd-methods.h, simd-intrinsics.c: debloat method names and
9406         prepare for no relocations.
9407
9408 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9409
9410         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9411         
9412         * cpu-x86.md: Same.
9413
9414         * mini-x86.c (mono_arch_output_basic_block): Same.
9415
9416         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9417         extract mask, max, min and sum of absolute differences.
9418
9419         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9420         method name.
9421
9422 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9423
9424         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9425         Renamed one test for consistency.
9426
9427 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9428
9429         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9430         fix to the code that deal with other blocks.
9431
9432 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9435
9436 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9437
9438         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9439         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9440         able to process the source reg.
9441
9442 2008-10-16  Martin Baulig  <martin@ximian.com>
9443
9444         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9445
9446         * inssel.brg: Add `OP_HARD_NOP'.
9447
9448         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9449
9450         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9451         `OP_HARD_NOP' instruction when running inside the debugger.
9452
9453         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9454         `OP_HARD_NOP' instruction when running inside the debugger.
9455
9456 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9457
9458         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9459         now works. The issue with the regalloc tripping up no longer
9460         happens.
9461
9462         * simd-intrinsics.c (load_simd_vreg): Same.
9463
9464 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9465         
9466         * basic-simd.cs: Tests for new Vector8ui methods.
9467
9468 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9469
9470         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9471         only for type. This fixes crashes where MonoInst::klass is checked
9472         for ops of type != VTYPE or OBJ.
9473
9474         * simd-intrinsics.c (load_simd_vreg): Same.
9475
9476 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9477
9478         * mini-ops.h: Add ops for packed shuffle/max/avg and
9479         extract mask.
9480         
9481         * cpu-x86.md: Same.
9482
9483         * mini-x86.c (mono_arch_output_basic_block): Same.
9484
9485         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9486         extract mask.
9487
9488         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9489         to emit extract mask op.
9490
9491         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9492         to emit word shuffles.
9493
9494 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9495
9496         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9497         the largest alignment needed by a variable, but at least
9498         sizeof(gpointer).
9499
9500 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9501
9502         * basic-simd.cs: Tests for the fixes in the last commit.
9503
9504 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9505
9506         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9507         no longer handles STACK_PTR input.
9508
9509         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9510
9511         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9512         get_simd_vreg   but handles STACK_PTR input.
9513
9514         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9515         as the input can be an arbitrary pointer.
9516
9517         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9518         LDADDR local optimization directly otherwise use a store op.
9519
9520 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9521
9522         * basic-simd.cs: Tests for dup low and dup high.
9523
9524 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * mini-ops.h: Add dup low and dup high ops.
9527         
9528         * cpu-x86.md: Same.
9529
9530         * mini-x86.c (mono_arch_output_basic_block): Same.
9531
9532         * simd-intrinsics.c (vector4f_intrinsics): Same.
9533
9534 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9535
9536         * basic-simd.cs: Tests for recently added functionality.
9537
9538 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9539
9540         * mini-ops.h: Add remaining sse1 fp ops.
9541         
9542         * cpu-x86.md: Add remaining sse1 fp ops.
9543
9544         * mini-x86.c (mono_arch_output_basic_block): Same.
9545
9546         * mini.h: Add enum for simd FP compare conditions.
9547
9548         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9549
9550         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9551         so the backed can generate the appropriate op.
9552
9553 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9554         This patch squeese one more byte from the SimdIntrinsc struct.
9555
9556         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9557         a a shift amount intead of simply or'ing it.
9558
9559         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9560
9561         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9562         byte so we can have an aditional flags field without increasing struct size.
9563
9564         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9565         against the simd_supported_versions bitmask.
9566
9567         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9568
9569 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9570
9571         * mini.c: remove rawbuffer code (the only use here is unsafe because
9572         it takes locks during signal handling and the kernel now provides much
9573         better info in proc/pid/smaps these days).
9574
9575 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9576
9577         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9578         OP_X86_PUSH_OBJ. Fixes #434620.
9579
9580         * objects.cs: Add a test.
9581         
9582 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9583
9584         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9585         that the packuswb/packusdw don't work with unsigned numbers for what
9586         would be negative numbers in signed format.
9587
9588         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9589         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9590
9591         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9592
9593         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9594
9595         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9596
9597         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9598
9599         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9600         add more ops.
9601
9602         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9603         version as the enum in mini.h.
9604
9605         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9606         for sse3 ops, check the simd_version field if present. This way the code
9607         works with all versions of sse.
9608
9609 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9610
9611         * simd-intrinsics.c: Fixed intrinsic name typo.
9612
9613         * mini.h: Added missing simd exported function.
9614
9615         * basic-simd.cs: Added tests for Vector4ui.
9616         Fixed broken test for Vector16b.
9617
9618 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9619
9620         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9621         the max length to 64.
9622
9623 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9624
9625         * method-to-ir.c: Only do the fast virtual generic method call for
9626         non-wrapper methods.
9627
9628         * mini.h, mini-trampolines.c: The new generic virtual remoting
9629         trampoline handles virtual method calls via the vtable (as done by
9630         the fast virtual generic method calls) to remoting proxies.
9631
9632         * mini.c (mono_jit_create_remoting_trampoline): For generic
9633         methods reate a generic virtual remoting trampoline.
9634
9635         * mini-amd64.h: Enable fast virtual generic method calls again.
9636
9637 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9638
9639         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9640         restore registers when doing tail calls.
9641
9642 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9643
9644         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9645         Vector4ui.
9646
9647 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9648
9649         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9650
9651 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9654
9655 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9656
9657         * basic-simd.cs: Retrofit for API changes.
9658
9659 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9660
9661         * mini-ppc.c: Handle integer stack arguments for tail calls.
9662
9663 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9664
9665         * optflags-def.h: Removed sse3 optimization.
9666
9667         * driver.c: Same.
9668
9669         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9670         sse3.
9671
9672         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9673
9674         * mini.h: Added enumeration with simd versions.
9675
9676         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9677         for detecting SSE3.
9678
9679         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9680
9681         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9682
9683 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9684
9685         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9686
9687         * basic-simd.cs: Fixed test naming.
9688
9689 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9690
9691         * mini-ops.h: Added ops for packed and saturated math, shifts
9692         and packing/unpacking.
9693
9694         * cpu-x86.md: Added descriptors for the above ops.
9695
9696         * mini-x86.c: Added code to emmit the above ops.
9697
9698         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9699
9700 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9701
9702         * aot-compiler.c (compile_method): Enable AOT for generic code.
9703
9704         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9705
9706 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9707
9708         * mini.c: add a workaround for a common screwup that ends up blamed
9709         to mono (other processes blocking signal delivery).
9710
9711 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9714         in the LDFLD/STFLD opcodes. Fixes #432673.
9715
9716         * iltests.il.in: Add a new test.
9717
9718 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9719
9720         * mini-arm.c: attach the thread in unmanaged->managed transitions
9721         using delegates (bug #433148).
9722
9723 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9724
9725        * basic-simd.cs: Use new ShuffleSel constants.
9726
9727 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9728
9729         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9730
9731         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9732         only disable simd intrinsics if no sse2 is detected.
9733
9734         * optflags-def.h: Added sse3.
9735
9736         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9737         is disabled.
9738
9739 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9742         when adding delegate-invoke wrappers.
9743
9744 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9745
9746         * Makefile.am: Reenable the simd tests.
9747
9748 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9749
9750         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9751           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9752           other vreg is allocated to that hreg.
9753
9754         Contributed under MIT/X11 license.
9755
9756 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9757
9758         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9759         yet checked in.
9760
9761 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9762
9763         * basic-simd.cs: New test suite for SIMD intrinsics.
9764
9765         * Makefile.am: Added new tests.
9766
9767 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9768
9769         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9770
9771         * mini-ops.h: Same.
9772
9773         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9774
9775         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9776         using SSE2 aware opcodes.
9777
9778         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9779         is enabled, this code path is only reachable if conversion ops are emmited after
9780         mono_method_to_ir.
9781
9782         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9783
9784         This optimization saves 6 bytes per conversion against the old version.
9785
9786 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * aot-compiler.c (compile_method): Don't skip methods referencing 
9789         generic methods without a corresponding entry in token_info_hash, since
9790         encode_method_ref () can handle all generic methods now.
9791
9792         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9793         generic context is set.
9794         
9795         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9796         generic sharing of LDTOKEN.
9797
9798 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9799
9800         * mini-amd64.h: Temporarily disabled fast virtual generic method
9801         calls because it breaks the System.Runtime.Remoting tests.
9802
9803 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9806
9807         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9808         so inlining actually works.
9809         (check_inline_caller_method_name_limit): Ditto.
9810
9811 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9812
9813         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9814         64 bit safety (from Olaf Hering and Andreas Farber).
9815
9816 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9817         
9818         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9819         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9820         unused virtual call support code.
9821
9822         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9823         
9824         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9825         which can't use aot trampolines.
9826         (decode_patch): Don't create aot trampolines for methods which can't use
9827         them.
9828
9829         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9830         use aot trampolines.
9831
9832         * mini.h: Bump AOT image format version.
9833         
9834 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9837         to save_token_info () since cmethod is inflated for constrained calls.
9838
9839         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9840
9841 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9842
9843         * Makefile.am: Add build rules for ppc64.
9844         This avoids the build failing at pedump with unresolved symbols
9845         due to lack of arch_sources. Instead it will now fail earlier
9846         due to lack of cpu-ppc64.md.
9847
9848         Contributed under MIT/X11 license.
9849
9850 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9851
9852         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9853         tail calls.
9854
9855         * iltests.il.in: Add test case for tail call with many arguments.
9856
9857 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9860         to the fast virtual generic method code until the aot case is fixed.
9861
9862 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9863
9864         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9865
9866 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9867
9868         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9869         thunks.
9870
9871 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9872         
9873         * simd-intrinsics.c: Forgot to add this one.
9874
9875         * mini-codegen.c: Fix macro in case SIMD is not supported.
9876
9877 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9878         
9879         This patch land initial JIT support for simd intrinsics.
9880
9881         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9882
9883         * Makefile.am: Added simd-intrinsics.c
9884
9885         * simd-intrinsics.c: New file with simd instrinsic related
9886         code.
9887
9888         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9889
9890         * cpu-x86.md: Add simd related instructions.
9891
9892         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9893
9894         * driver.c: Added two new --regression variants.
9895
9896         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9897
9898         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9899
9900         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9901         extract some complicated logic to helper functions.
9902
9903         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9904
9905         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9906
9907         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9908         the specialized simplification pass.
9909
9910         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9911
9912         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9913
9914         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9915         table.
9916
9917         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9918         if MONO_ARCH_NEED_SIMD_BANK is defined.
9919
9920         * mini-ops.h: Added the new simd ops.
9921
9922         * mini-x86.c: Added mono_arch_xregname.
9923
9924         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9925
9926         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9927
9928         * mini-x86.h: Define simd related MONO_ARCH macros.
9929
9930         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9931
9932         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9933
9934         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9935         MONO_CLASS_IS_SIMD to deal with simd related IR.
9936
9937         * mini.h (MonoInst): Added spill_var to the backend union.
9938
9939         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9940
9941         * mini.h: Added forward declarations of the new simd fuctions.
9942
9943         * optflags-def.h: Added new optimization names SIMD.
9944
9945         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9946
9947         * regalloc.h: Added support for working with 3 register banks.
9948
9949         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9950
9951         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9952
9953 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9954
9955         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9956
9957 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9960         instead of one on 64 bit systems.
9961
9962         * method-to-ir.c: Remove unused includes.
9963
9964 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9965
9966         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9967         cfg->used_int_regs, since the two are different on arm.
9968
9969 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9970
9971         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9972         mono_method_get_vtable_index() to get the vtable index.
9973
9974 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9975
9976         * method-to-ir.c (mono_method_to_ir2): Don't create native
9977         wrappers for array methods, because they're never called (and if
9978         they were called they wouldn't work).
9979
9980 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9981
9982         * method-to-ir.c (mono_method_to_ir2): Array methods are
9983         special-cased and must not be invoked indirectly via the (M)RGCTX
9984         when generic sharing is turned on.  Fixes #431413.
9985
9986 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9987
9988         * method-to-ir.c: When generic sharing is active, call
9989         non-interface virtual generic methods via the standard trampoline.
9990
9991         * mini-trampolines.c: Handle virtual generic shared methods.
9992
9993         * mini.h, mini-x86.c, mini-x86.h: New argument for
9994         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9995         method thunks and which is the trampoline to call if the lookup
9996         fails.  Enable the virtual generic method thunk for x86.
9997
9998         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9999         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
10000         argument but assert that it's NULL, because these archs don't yet
10001         implement the virtual generic method thunk.  Changes in the IMT
10002         thunk data structures.
10003
10004 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * aot-compiler.c (emit_globals): Avoid invalid characters in
10007         the static linking symbol.
10008
10009         * objects.cs: Add a test for the range check optimization. Fix warnings.
10010
10011         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
10012         optimization from the current JIT.
10013
10014         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
10015         later in decompose_array_access_opts () to allow more optimizations.
10016
10017         * method-to-ir.c (mono_handle_soft_float): Rename this to 
10018         mono_decompose_soft_float () for consistency.
10019
10020         * mini-ops.h: Fix arguments of OP_STRLEN.
10021
10022         * method-to-ir.c (save_cast_details): Extract the cast details saving code
10023         into a separate function.
10024         (reset_cast_details): Ditto.
10025         (handle_unbox): Save cast details. Fixes #431254.
10026
10027         * method-to-ir.c: Remove some obsolete FIXMEs.
10028
10029 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10030
10031         * ir-emit.h (alloc_dreg): Write a warning before crashing.
10032
10033 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10034
10035         * mini-codegen.c: More work on macros to make them
10036         ready for multiple regbanks.
10037
10038 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10039
10040         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
10041
10042         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
10043
10044 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10045
10046         * mini-codegen.c (mono_spillvar_offset): Proper support for
10047         multiple regbanks.
10048
10049 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
10052         the stack overflow changes.
10053
10054 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10055
10056         * mini-codegen.c: Make all bank macros depend on reg_bank.
10057
10058         * mini-codegen.c (mono_local_regalloc): Make free mask
10059         initialization regbank aware.
10060
10061 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10062
10063         * mini-codegen.c (mono_local_regalloc): Extract callee
10064         mask selection to a function and make it regbank aware.
10065
10066 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10067
10068         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10069         code to deal with many regbanks.
10070
10071 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * mini-codegen.c: More fp->regbank changes.
10074
10075 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10076
10077         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10078         of a hardcoded constant.
10079
10080 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10081
10082         * method-to-ir.c (type_from_stack_type): Fix typo.
10083
10084 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10085
10086         * mini-ia64.c (emit_move_return_value): Convert float return values to
10087         double.
10088
10089         * objects.cs: Add a new test.
10090         
10091         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10092         VARARG methods to fix an assert later.
10093
10094         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10095         end so it at least compiles.
10096
10097 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10098
10099         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10100
10101 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10102
10103         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10104         optimization to a new function (emit_optimized_ldloca_ir) and enable
10105         it for both ldloca and ldloca_s.
10106
10107 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10108
10109         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10110         gshared CASTCLASS code.
10111
10112         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10113         amd64, where the libc stack unwinder encounters stack frames referring to
10114         native code in unmapped memory.
10115
10116         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10117         sharing.
10118
10119         * generics.cs: Add new test.
10120
10121 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10124         add a check that one of the ARM_FPU_ constants is defined.
10125
10126         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10127         
10128         * mini-exceptions.c: Fix build on non-altstack platforms.
10129
10130         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10131         sharing of vtypes.
10132
10133         * ir-emit.h: Add a comment to NEW_PCONST.
10134
10135         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10136
10137         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10138
10139         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10140         after the changes to MonoJitDomainInfo.
10141
10142 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10143
10144         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10145
10146 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10147
10148         * mini-ppc.c: Compiler warning fixes.
10149
10150 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10151
10152         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10153         for pinvokes.
10154
10155 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10156
10157         * exceptions-ppc.c, mini-ppc.h: Compile
10158         mono_arch_handle_altstack_exception() on Darwin, too.
10159
10160 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10161
10162         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10163         work on archs which don't have generic sharing implemented, only
10164         without the vtable_arg.
10165
10166 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10167
10168         * mini.c: Added comment explaining why delegate ctor icall
10169         wrappers are compiled.
10170
10171 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10172
10173         * mini.c: Don't produce trampolines to delegate ctor icall
10174         wrappers but compile them upfront.
10175
10176 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10177
10178         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10179         runtime-set function when going back to managed code. Currently this
10180         is used to set back the protection on the soft ovf pages and/or to
10181         throw the stack overflow exception that happened in unmanaged code.
10182
10183 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10184
10185         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10186         runtime-set function when going back to managed code. Currently this
10187         is used to set back the protection on the soft ovf pages and/or to
10188         throw the stack overflow exception that happened in unmanaged code.
10189
10190 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10191
10192         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10193         the support code for restoring stack protection after stack overflows
10194         that happen in unmanaged code. Don't set the exec permission on the
10195         soft overflow area.
10196
10197 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10200         delegate->method_ptr is set. Fixes #428054.
10201
10202 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10203
10204         * tests.cs: Rename to ratests.cs.
10205
10206         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10207         emit_get_rgctx_... functions.
10208
10209 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10210
10211         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10212
10213 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10214
10215         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10216         before asserting that method is sharable.
10217
10218 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10219
10220         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10221         whether method needs a static RGCTX wrapper used instead of
10222         complex conditions.
10223
10224         * generic-sharing.c, mini.h: A few functions moved to
10225         metadata/generic-sharing.c.
10226
10227 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10228
10229         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10230         Generic code sharing for value types, which essentially means
10231         treating value type methods like static methods.  The RGCTX is
10232         passed in the same way.
10233
10234 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10235
10236         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10237         opcode when creating multi-dimensional arrays of open types.
10238
10239         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10240         open generic types.
10241
10242         * generics.cs: Add a test.
10243
10244         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10245
10246 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10247
10248         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10249
10250         * mini.c (mini_method_compile): Set it when running under the debugger. 
10251
10252         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10253         vreg optimization if the flag is set.
10254
10255         * driver.c (mono_main): Add --attach= option to pass options to
10256         the attach agent.
10257
10258         * mini.c (sigquit_signal_handler): Start the attach agent.
10259
10260         * ssapre.c: Disable this to save space since it is not yet ported to
10261         linear IR.
10262
10263         * regalloc2.c: Disable this to save space.
10264
10265         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10266
10267 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10268
10269         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10270         the -v option useful again.
10271
10272 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10273
10274         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10275         --break-at-bb.
10276
10277         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10278         arrays of arrays. Fixes #428406.
10279
10280         * method-to-ir.c (mini_emit_castclass): Ditto.
10281
10282         * objects.cs: Add new test.
10283         
10284 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10285
10286         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10287         was wrong at it choked against target_type_is_incompatible for byref types.
10288
10289 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10292         places.
10293
10294 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10295
10296         * mini-exceptions.c: update a few more exceptions-related counters.
10297
10298 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10299
10300         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10301         new functions to allocate from persistent mempools.
10302
10303 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10306         multiple register banks in the future.
10307
10308         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10309
10310 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10311
10312         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10313
10314         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10315
10316         * mini.h: Export type_to_eval_stack_type.
10317
10318         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10319         is only ins->klass of byref types.
10320
10321 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10324         (mini_emit_memcpy2): Ditto.
10325
10326         * mini-amd64.c: Fix a warning.
10327
10328 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10329
10330         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10331         linking.
10332
10333 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10334
10335         * method-to-ir.c: Extract stloc micro-optimization to a
10336         function and apply it to all cases.
10337
10338 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10339
10340         * method-to-ir.c: Don't fail generic code sharing in cases we
10341         already support.
10342
10343 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10344
10345         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10346
10347 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10348
10349         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10350         implementation.
10351
10352 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10353
10354         * trace.c: make tracing more useful and correct, with per-thread
10355         id and indent info.
10356
10357 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10358
10359         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10360         doing a method call and the argument is an R4.
10361
10362 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10363
10364         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10365         generic methods.
10366
10367 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10368
10369         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10370
10371 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10374         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10375
10376 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10377
10378         * driver.c: Add a --agent argument (not supported yet) to load managed
10379         agent assemblies before loading the main assembly, similarly to how the
10380         Java VM handles agents.
10381
10382 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10383
10384         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10385         function to do stack layout of local variables.
10386
10387 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10388
10389         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10390         calculation.
10391
10392 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10395         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10396         JIT if DISABLE_JIT is defined.
10397
10398         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10399         defined.
10400
10401 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10402
10403         * iltests.il.in: Disable the fconv test on PPC (the result is
10404         undefined according to ECMA).
10405
10406 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10407
10408         * iltests.il.in: Enable tail call tests for PPC.
10409
10410         * mini.h: Add variable for storing incoming valuetype argument
10411         addresses for tail calls.
10412
10413         * mini-ppc.c: Implement valuetype arguments and return values for
10414         tailcalls on Linux.
10415
10416 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10417
10418         * mini-ppc.c: Partially implement tail calls (struct arguments and
10419         return values not supported).
10420
10421         * method-to-ir.c: Enable tail calls on PPC.
10422
10423 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10426         runtime-invoke wrappers to work around the problem of them getting
10427         assigned to a random class.
10428
10429         * aot-runtime.c (mono_aot_get_method): Ditto.
10430         
10431 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10432
10433         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10434         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10435
10436 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10437
10438         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10439         until they're implemented properly.
10440
10441         * exceptions-ppc.c: Use arch-independent exception-handling code
10442         instead of custom one.
10443
10444         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10445         for Linear IR.
10446
10447         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10448
10449         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10450         applies when __powerpc__ is defined.
10451
10452 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10453
10454         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10455         methods to their code to avoid computing the full name of wrappers and
10456         doing a lookup in a string hash table.
10457
10458 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10461         we identify bblocks before method_to_ir () is ran.
10462
10463         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10464         Also avoid optimizing branches pointing to themselves.
10465
10466         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10467
10468 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10469
10470         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10471
10472 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10475         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10476         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10477         'buf'.
10478
10479         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10480         jumped to the same entry in plt_jump_table.
10481
10482 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10483
10484         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10485         dynamic images.
10486
10487 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10488
10489         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10490         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10491         #421807.
10492
10493 2008-08-29  Geoff Norton  <gnorton@novell.com>
10494
10495         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10496         segment, and doesn't properly handle .space as .text.  Fixes
10497         AOT Mach/ARM
10498
10499 2008-08-29  Geoff Norton  <gnorton@novell.com>
10500
10501         * mini.c: Disable the mach exception handler when running on 
10502         ARM
10503
10504 2008-08-29  Geoff Norton  <gnorton@novell.com>
10505
10506         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10507         globals on Darwin/ARM
10508
10509 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10512         since too many things depend on it. Instead, call 
10513         mono_runtime_set_no_exec ().
10514         
10515         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10516         the new JIT.
10517
10518         * aot-compiler.c: Add an 'asm-only' AOT option.
10519
10520         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10521                 
10522         * aot-compiler.c (compile_method): Disable gshared support for now as it
10523         doesn't yet work.
10524
10525 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10526
10527         * mini-amd64.h : Fix a compiler warning.
10528
10529         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10530           Changed to use a callback function to retrieve the unwind info.
10531           This avoids problems observed when code blocks were removed by
10532           unloading an app domain.
10533
10534         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10535           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10536           to work properly.
10537
10538         Contributed under MIT/X11 license.
10539
10540 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10541
10542         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10543           case to keep the stack aligned to 8.
10544
10545         Contributed under MIT/X11 license.
10546
10547 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10548
10549         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10550         avoid repeated linear searches.
10551
10552 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10555         methods it can't handle.
10556         
10557         * aot-compiler.c (add_method): Avoid adding a method twice.
10558         (add_wrappers): Add runtime invoke wrappers for all methods.
10559
10560         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10561         function to create an aot-compatible version of this trampoline.
10562
10563         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10564
10565 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10568
10569         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10570         with a generic sharing failure.
10571
10572         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10573
10574         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10575         CEE_RETHROW. Fixes #419634.
10576
10577         * mini.c (mono_method_to_ir): Ditto.
10578
10579         * exceptions.cs: Add a new test.
10580         
10581         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10582         to mono_type_stack_size_internal () since some callers might not pass in
10583         an rgctx.
10584
10585         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10586         instrument_prolog. Fixes #419878.
10587
10588         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10589         doubles in soft float mode volatile.
10590
10591 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10592
10593         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10594
10595         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10596         to handle soft float correctly.
10597
10598         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10599         the fast path.
10600
10601         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10602
10603         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10604         to sp, since the generics catch code requires it.
10605
10606         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10607         copying.
10608
10609         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10610         mono_arch_emit_imt_argument ().
10611
10612         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10613
10614         * mini-arm.c tramp-arm.c: Generic sharing updates.
10615
10616 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * mini-arm.c: Fix the arm build.
10619
10620         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10621         handling enums, generic instances and generic sharing.
10622         (mini_type_stack_size_full): Ditto.
10623
10624         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10625         
10626         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10627
10628         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10629
10630         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10631         trampolines.
10632
10633         * mini-arm.c: Various small generic sharing changes.
10634
10635         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10636         this for x86.
10637         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10638         custom code.
10639
10640         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10641         helper function to return a generic class init trampoline.
10642
10643         * method-to-ir.c mini.c: Use it.
10644         
10645         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10646         arch-specfic function to return a generic class init trampoline.
10647
10648         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10649         the GENERIC_CLASS_INIT custom code.
10650
10651         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10652         a fatal error, not a sharing failure.
10653
10654         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10655         needed.
10656
10657         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10658         trampoline argument from MONO_ARCH_VTABLE_REG.
10659
10660         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10661         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10662         argument, and pass the vtable in VTABLE_REG.
10663
10664         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10665         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10666         argument, and pass the vtable in VTABLE_REG.
10667         (mono_arch_create_trampoline_code_full): Remove some special casing for
10668         the rgctx fetch trampoline.
10669
10670         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10671         Fixes #419273.
10672
10673         * iltests.il: Add a test for it.
10674
10675 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10678
10679         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10680         no longer needed.
10681
10682         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10683         use mono_jit_info_table_find () to avoid recursion.
10684         (mono_delegate_trampoline): Add a sync wrapper here.
10685
10686         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10687         here.
10688
10689         * mini.c (mono_method_to_ir): Ditto.
10690         
10691         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10692         add_sync_wrapper argument. Don't add a sync wrapper here.
10693         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10694
10695         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10696         
10697 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10698
10699         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10700           of nonvolatile registers back from MonoContext to CONTEXT.
10701
10702         Contributed under MIT/X11 license.
10703
10704 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10705
10706         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10707           arguments on Winx64 there are only 4 argument registers.  For this
10708           logic to work the last argument must be pulled from the stack.  
10709
10710         Contributed under MIT/X11 license.
10711
10712 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10713
10714         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10715
10716         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10717         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10718         encode/decode_method_ref ().
10719
10720         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10721
10722         * aot-runtime.c (decode_patch): Ditto.  
10723
10724         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10725         MONO_PATCH_INFO_METHOD.
10726
10727         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10728         MonoGenericJitInfo.
10729
10730         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10731         MonoGenericJitInfo.
10732
10733         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10734
10735         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10736         one from the caller.
10737
10738         * aot-runtime.c (decode_generic_inst): New function to decode and
10739         return a interned generic inst.
10740         (decode_klass_ref): Use it.
10741         (decode_method_ref): Ditto.
10742
10743         * aot-compiler.c (emit_exception_debug_info): Save 
10744         jinfo->has_generic_jit_info too.
10745
10746 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10749
10750         * iltests.il.in: Add a test for fconv_to_i.
10751
10752         * liveness.c: Disable the liveness2 pass for now to save space.
10753
10754         * regalloc2.c: Include mempool-internals.h to fix warnings.
10755
10756         * aot-compiler.c (encode_method_ref): Encode the context of generic
10757         instance methods.
10758
10759         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10760         the context saved in the aot file.
10761
10762         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10763
10764         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10765
10766         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10767         volatile so they won't be optimized away.
10768
10769 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10770
10771         * ssa.c:
10772         * ssa2.c:
10773         * mini.c:
10774         * regalloc2.c:
10775         * dominators.c: Remove duplicated functions that now are in
10776         mempool-internals.h.
10777
10778 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10779
10780         * aot-compiler.c: Fix warnings.
10781
10782         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10783
10784         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10785
10786         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10787         as the patch type.
10788
10789         * mini.c (mono_resolve_patch_target): Ditto.
10790         
10791         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10792         (encode_klass_ref): Add support for encoding VARs/MVARs.
10793
10794         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10795
10796         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10797         the handling of the got entries into a separate 'decode_got_entry' function.
10798         Add support for RGCTX_FETCH.
10799
10800         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10801         clobbered by the trampoline code.
10802
10803         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10804         not clobbered by the indirect calling code.
10805
10806 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10809         to fix the build.
10810
10811 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10812
10813         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10814         signature using the compilation mempool otherwise we would leak it.
10815
10816 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10819         mono_emit_abs_call ().
10820
10821         * patch-info.h: Add GENERIC_CLASS_INIT.
10822
10823         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10824
10825         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10826         as their target as a near call.
10827
10828         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10829         ABS handling code.
10830         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10831
10832         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10833         call to a runtime function described by a patch.
10834
10835         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10836         mono_emit_abs_call, this has the advantage that the ABS handling code in
10837         mono_codegen () can handle them both, and can handle other stuff in the
10838         future without additional code.
10839
10840         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10841         entry.
10842         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10843         abs addresses.
10844
10845         * mini.h: Add missing bblock related prototypes.
10846
10847         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10848         reverse_inst_list_len fields.
10849
10850         * mini.c: Refactor this file a bit by moving branch optimizations to 
10851         branch-opts.c.
10852
10853         * method-to-ir.c: Merge generic sharing changes missed earlier.
10854
10855         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10856
10857         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10858         shared patches. Process METHODCONST as a shared patch.
10859
10860         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10861         as it crashes on the 2.0 mscorlib.
10862
10863         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10864         to cause crashes.
10865         
10866         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10867         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10868         by IMT.
10869
10870         * aot-compiler.c: Reorganize the got handling code to be a bit more
10871         understandable.
10872
10873 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10874
10875         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10876         mono_patch_info_equals/hash, and use it to massively simplify
10877         get_plt_index ().
10878
10879         * mini.c (mono_patch_info_hash): Simplify this and add support for
10880         more patch types.
10881
10882         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10883
10884         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10885         handling code, since an offset is not enough to identify a trampoline.
10886
10887         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10888
10889 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10890
10891         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10892
10893         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10894
10895         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10896
10897         * decompose.c: PPC decompositions for various ops.
10898
10899         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10900
10901 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10904         call the generic trampoline code using a call, instead of a jump, to
10905         remove some special casing from the generic trampoline code.
10906
10907         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10908         (mono_codegen): Ditto.
10909
10910         * aot-compiler.c aot-runtime.c: Ditto.
10911
10912         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10913
10914         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10915         helper function to find the offset corresponding to a lazy fetch trampoline.
10916
10917         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10918         when doing generic sharing.
10919
10920         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10921         places.
10922         
10923         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10924         mini-trampolines.c to be with the other trampoline creation functions.
10925
10926         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10927         as it is equal to method->signature in most cases, add a 
10928         mono_emit_method_call_full variant which takes a signature and an imt
10929         argument as well.
10930
10931 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10934         to this function, since it could be computed easily from the method 
10935         argument.
10936         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10937         more.
10938
10939         * method-to-ir.c mini.c: Remove references to 
10940         compile_generic_method_wo_context.
10941
10942         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10943         generic method calls.
10944         
10945         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10946         dimensional non-szarrays.
10947
10948         * mini.c (mini_init): Register mono_array_new_1.
10949
10950         * jit-icalls.c (mono_array_new_1): New jit icall.
10951
10952         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10953         pointing to the method.
10954
10955         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10956         method addresses belonging to METHOD_JUMP patches in the 
10957         jump_target_got_slot_hash.
10958         (mono_aot_load_method): Ditto.
10959
10960         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10961         METHOD_JUMP patches.
10962
10963         * mini.c (mini_create_jit_domain_info): New helper function which 
10964         initializes/frees domain->runtime_info.
10965         (mini_free_jit_domain_info): Ditto.
10966         (mini_init): Install the domain hook functions with the runtime.
10967
10968         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10969         information maintained by the JIT.
10970
10971         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10972         insertion into jump_table_hash into mono_codegen (), also implement proper
10973         locking.
10974
10975         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10976         tail calls, it is already done by the aot code.
10977         
10978         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10979         mechanism on amd64.
10980
10981         * iltests.il.in: Make the jmp test a bit more complex.
10982
10983         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10984         generic instances which doesn't have a token.
10985
10986         * aot-runtime.c (decode_method_ref): Ditto.
10987         
10988         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10989         can handle this case now.
10990         (handle_box): Ditto.
10991
10992 2008-08-15  Geoff Norton  <gnorton@novell.com>
10993
10994         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10995         debugging check.
10996
10997 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
11000         calling generic methods.
11001
11002         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
11003
11004         * aot-runtime.c (decode_patch_info): Ditto.
11005
11006         * mini.c (mono_resolve_patch_target): Ditto.
11007         
11008         * patch-info.h: Add METHOD_RGCTX.
11009
11010         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
11011
11012 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
11013
11014         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
11015         arguments in registers.
11016
11017         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
11018         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
11019
11020         * mini.c (mini_method_compile): Abort aot compilation for generic
11021         methods if generic sharing is disabled.
11022         
11023         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
11024         an mrgctx.
11025
11026         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
11027         requiring an mrgctx.
11028
11029         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
11030         store instructions when converting a vcall to a normal call.
11031
11032         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
11033         mono_arch_find_jit_info.
11034
11035 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
11038         avoid calling mono_method_full_name () for every method even if the
11039         env var is not set.
11040         (check_inline_caller_method_name_limit): Ditto.
11041
11042 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
11045         assemblies in one run.
11046
11047         * aot-compiler.c (mono_compile_assembly): Only print out a count of
11048         skipped methods if it is not 0.
11049
11050         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
11051
11052 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11053
11054         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11055           MONO_ARCH_HAVE_UNWIND_TABLE.
11056
11057         Contributed under MIT/X11 license.
11058
11059 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11060
11061         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11062           from default optimizaton list on Winx64.
11063
11064         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11065
11066         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11067           the LMF from the MonoJitTlsData structure.
11068
11069         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11070
11071         Contributed under MIT/X11 license.
11072
11073 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * mini.c (sigsegv_signal_handler): Fix the build.
11076
11077         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11078         assembly->aot_module.
11079
11080         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11081         hash table. This simplifies and speeds up a lot of code, and fixes support
11082         for .netmodules.
11083
11084         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11085         with the runtime.
11086
11087         * mini-exceptions.c: Ditto.
11088         
11089         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11090         'native_offset' argument, since these are computed in the 
11091         mono_find_jit_info () function.
11092
11093         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11094         is used by exceptions-ppc.c.
11095
11096         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11097         mono_arch_find_jit_info ().
11098         
11099         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11100         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11101         generic code in mini-exceptions.c.
11102
11103 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11106
11107         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11108         
11109         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11110         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11111         called while holding the loader lock. Fixes #415608.
11112         (mono_aot_get_method_from_token_inner): Ditto.
11113
11114 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11117         to reduce differences between this and the generic implementation in
11118         mini-exceptions.c.
11119         (ves_icall_get_frame_info): Ditto.
11120
11121         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11122
11123         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11124         longer neccesarry.
11125
11126         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11127         mono_arch_get_call_filter () and make it non-static, for consistency with the
11128         other architectures.
11129
11130 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11131
11132         * mini.c:
11133         * local-propagation.c:
11134         * mini-x86.c: Correct the name of arch defines.
11135
11136 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11139         NO_EMULATE_LONG_SHIFT_OPS define.
11140
11141 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11142
11143         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11144         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11145
11146         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11147         MACH fixes. Merged from the 2.0 branch.
11148
11149         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11150
11151         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11152         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11153
11154         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11155
11156         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11157         mono_marshal_get_native_wrapper () signature changes.
11158
11159 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11160
11161         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11162         conversion bug under arm.
11163
11164 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11165
11166         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11167
11168         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11169         with overflow checking.
11170
11171 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11172
11173         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11174         to the genmdesc.pl file
11175
11176 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11179         arg_array in the soft-float versions of the LOAD/STORE macros.
11180
11181         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11182         implementation.
11183
11184         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11185
11186 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11187
11188         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11189         a float HFA. Fixes #413621.
11190
11191 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11192
11193         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11194         frame_size to args_size. Fixes build.
11195
11196 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11197
11198         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11199         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11200
11201         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11202         the stack are not unaligned. Fixes #413247.
11203         
11204 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11205
11206         * mini.c: update jitted methods performance counters.
11207
11208 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11209
11210         * mini-exceptions.c: increase the exceptions thrown performance
11211         counter in mono_handle_exception ().
11212
11213 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11214
11215         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11216         can work with netmodules.
11217
11218 2008-07-28  Geoff Norton  <gnorton@novell.com>
11219
11220         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11221         regression tests.
11222
11223 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11226         correct place.
11227
11228 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11229
11230         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11231           The float param registers and other param registers must be the 
11232           same index on Windows x64.
11233
11234         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11235           ArgValuetypeAddrInIReg argument case.  Setting the argument
11236           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11237
11238         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11239           variable computed above as the copy length for arguments of storage
11240           type ArgValuetypeAddrInIReg.
11241
11242         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11243           ArgValuetypeAddrInIReg argument case.  This case will rely on
11244           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11245
11246         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11247           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11248           jump and tail call instructoins as they do not follow the typical call behavior.
11249
11250         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11251           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11252           local variable and pass the local variable by reference to the called method.
11253
11254         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11255           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11256           of a struct is passed in a register it must be saved with the other
11257           volatile argument on the stack.
11258
11259         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11260           frame pointer the stack adjustment value must be saved to the unwind 
11261           info structure.
11262
11263         Contributed under MIT/X11 license.
11264
11265 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11266
11267         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11268         which got lost in the merge.
11269
11270 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11271
11272         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11273         build.
11274
11275         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11276         
11277         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11278         icalls, since they won't be patched.
11279
11280         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11281         different code sequence when running under valgrind to prevent some valgrind
11282         errors.
11283
11284         * iltests.il.in: Add new regression test.
11285
11286         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11287         end with a throw.
11288
11289         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11290         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11291
11292         * iltests.il.in: Add new test.
11293
11294         * aot-compiler.c: Fix some warnings.
11295
11296         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11297         Fixes #412494.
11298
11299 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11302         (mini_usage_jitdeveloper): Add a missing --wapi option.
11303
11304 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11305
11306         * mini-codegen.c: Simplify the is_fp macros.
11307         (free_up_ireg): Remove, use free_up_reg instead.
11308         (free_up_reg): Fix the fp case.
11309
11310 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11311
11312         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11313         lowered earlier.
11314
11315         * exceptions-x86.c: Merge some changes which seemed to have got lost
11316         in the linear-ir merge.
11317
11318         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11319
11320         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11321         long vreg volatile even if the variable was already created.
11322
11323         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11324         volatile variables.
11325
11326 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11327
11328         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11329
11330         * mini.c (mono_jit_compile_method_inner): Add support for 
11331         MONO_EXCEPTION_BAD_IMAGE.
11332
11333         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11334         mini_method_get_context () returns NULL. Fixes #356531.
11335
11336         * mini.c (mono_method_to_ir): Ditto.
11337         
11338         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11339         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11340
11341 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11342
11343         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11344         in the LDFTN implementation.
11345
11346 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11347
11348         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11349         code, patch calls to icalls, too, even if they're not in the
11350         shared generic code hash.  Fixes #411962.
11351
11352 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * cpu-x86.md: Increase the length of the fcall opcodes.
11355
11356         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11357         calls returning floats.
11358
11359         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11360         on NEWARR.
11361         
11362         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11363         missed earlier.
11364
11365         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11366         into the domain->method_code_hash.
11367
11368         * aot-compiler.c: Fix win32 build.
11369
11370         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11371         
11372         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11373         gshared NEWARR implementation.
11374
11375         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11376
11377         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11378         can be used outside of method_to_ir.
11379
11380         * mini.h (MonoCompile): Add arg_types field.
11381
11382         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11383         
11384         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11385         the values of the local arg_array and param_types array.
11386
11387 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11390         got accesses might only get generated later when NEWOBJ is decomposed.
11391         
11392         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11393         looking up the native code of the target method when a delegate is called
11394         for the first time.
11395
11396         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11397         optimization.
11398
11399         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11400
11401         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11402         AOT work on platforms without a working dlsym implementation.
11403
11404         * mini.h: Bump AOT image format version.
11405         
11406 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11407
11408         * mini-exceptions.c: Free a MonoType with
11409         mono_metadata_free_type() instead of g_free().
11410
11411         * aot-runtime.c: Free a MonoType.
11412
11413 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11414
11415         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11416         optimization.
11417
11418         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11419         fp stack on x86.
11420
11421 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11422         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11423         profiler hook.
11424
11425 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11428         NEWOBJ calls on valuetypes.
11429
11430         * iltests.il.in: Add new test.
11431
11432         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11433
11434 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11437         is no longer needed.
11438
11439         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11440         non register sized integer arguments.
11441         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11442         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11443         emit_memcpy2 ().
11444
11445         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11446         CEE_MONO_RETOBJ.
11447         
11448         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11449         two a binop with different sized arguments is emitted.
11450
11451         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11452         instruction in the ins==NULL case.
11453
11454 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11455
11456         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11457
11458         * mini-x86.c: Fix osx build.
11459
11460         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11461         opcodes as well.
11462
11463         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11464         instruction for non int sized variables.
11465
11466         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11467         implementation.
11468
11469 2008-07-23  Robert Jordan  <robertj@gmx.net>
11470
11471         * method-to-ir.c: Fix MSVC build.
11472
11473 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11474
11475         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11476         a non int sized type, widen it to an int since newer versions of gcc seem to
11477         generate code which needs this.
11478
11479         * ssa2.c abcremoval2.c: Fix warnings.
11480
11481         * *: Merge the Linear IR branch.
11482
11483         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11484         the ChangeLog file there describes all the changes done over the years. 
11485         Further documentation can be found at www.mono-project.com/Linear_IL.
11486
11487 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11488
11489         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11490           The float param registers and other param registers must be the 
11491           same index on Windows x64.
11492
11493         Contributed under MIT/X11 license.
11494
11495 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11496
11497         * mini.c: Make the previous fix GC safe.
11498
11499 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11500
11501         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11502
11503 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11504
11505         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11506           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11507           ArgValuetypeAddrInIReg instead.
11508
11509         Contributed under MIT/X11 license.
11510
11511 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11512
11513         * mini-codegen.c (get_register_spilling): Fix a warning.
11514
11515 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11516
11517         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11518         for types which the initialization fails. Raises the provided exception
11519         at the right stop after cleanup.
11520
11521 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * aot-compiler.c: Free most of the memory allocated during compilation.
11524
11525         * mini.c (mini_parse_debug_options): Fix a leak.
11526         
11527         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11528         during aot compilation.
11529
11530 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11531
11532         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11533         it has too much register pressure.
11534
11535 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11538
11539 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11540
11541         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11542         on x86.
11543
11544         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11545         on amd64 similar to the way it is done on arm.
11546
11547         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11548
11549         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11550         consistency, normalize error messages, avoid loading aot-only modules in
11551         normal mode.
11552
11553         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11554         for consistency.
11555
11556         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11557
11558 2008-07-11  Martin Baulig  <martin@ximian.com>
11559
11560         * debug-debugger.h
11561         (MonoDebuggerInfo): Add `interruption_request'.
11562
11563 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * aot-compiler.c (emit_plt): Remove some dead code.
11566
11567         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11568
11569         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11570         return the plt info offset belonging to a given plt entry.
11571
11572         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11573         mono_aot_get_plt_info_offset.
11574         
11575         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11576         similar to the amd64 code by makeing jumps through a separate jump table 
11577         instead of embedding the jump addresses into the code.
11578
11579 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11580
11581         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11582         method.
11583
11584 2008-07-10  Martin Baulig  <martin@ximian.com>
11585
11586         * mini.c (mini_method_compile): Disable generics sharing when
11587         running in the debugger.
11588
11589 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11590
11591         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11592
11593         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11594         the local register allocator from running out of registers on x86 when 
11595         using aot.
11596
11597 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11598
11599         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11600         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11601         C4146.
11602
11603         Contributed under MIT/X11 license.
11604
11605 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11608         speed up the assembler.
11609
11610 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11613         support.
11614
11615         * mini.c: Move the soft float handling macros a bit earlier, add 
11616         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11617         place.
11618
11619         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11620
11621         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11622         read-only to help catch code allocation requests.
11623         
11624         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11625         and turn it off when using --aot-only or when compiling with --aot=full.
11626
11627         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11628         jump table for switches from the normal domain mempool, not the code
11629         manager.
11630
11631         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11632         unbox trampoline which handles aot-only mode too.
11633
11634         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11635         an AOTed unbox trampoline.
11636
11637         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11638
11639 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11640
11641         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11642         ""
11643
11644         Contributed under MIT/X11 license.
11645
11646 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11647
11648         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11649           the unwind information for the method at the end of the allocated block.
11650           
11651         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11652           MonoCompileArch to hold the unwind info for SEH on Winx64
11653         
11654         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11655           frame pointer info for the method being compiled.
11656           
11657         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11658           the call to mono_exception_from_token.
11659           
11660         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11661           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11662           information is stored a the end of the method block because it is all 32-bit offset based.
11663
11664         Contributed under MIT/X11 license.
11665
11666 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11667
11668         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11669
11670         * wapihandles.c: Fix warnings.
11671
11672         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11673         mode.
11674
11675         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11676         mono_jit_compile_method in aot-only mode since that calls the type 
11677         initializer.
11678         
11679         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11680         get_delegate_invoke_impl in aot-only mode.
11681
11682         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11683
11684 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11685
11686         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11687
11688         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11689         is on by default.
11690
11691         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11692
11693         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11694         init trampoline from the AOT file as well.
11695
11696         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11697         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11698         code.
11699
11700         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11701         mono_init.
11702
11703         * exceptions-amd64.c: Add _full variants for the remaining exception code
11704         creation functions as well, allow emission of relocatable code, remove
11705         caching since that is now done by the caller.
11706
11707         * mini-exceptions.c: Add _full variants for the remaining exception code
11708         creation functions as well, add aot-only support.
11709
11710         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11711         if we can determine a proper token for them.
11712         (add_wrappers): Add a few more wrappers.
11713         (emit_method_code): Remove some dead code.
11714         (emit_trampolines): Emit exception code too.
11715
11716         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11717
11718         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11719         mono_array_new_va which avoids varargs.
11720
11721         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11722
11723         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11724         mono_arch_create_specific_trampoline () in all places.
11725
11726         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11727         a bit so it can be used for other things as well.
11728         
11729         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11730         on demand as well.
11731
11732         * exceptions-amd64.c: Rename the caching from the exception code creation
11733         functions, it is done by the caller instead.
11734         
11735         * exceptions-amd64.c: Change the signature of the exception code creation 
11736         functions to allow the creation of relocatable code later.
11737
11738         * mini-exceptions.c: Add a set of functions to query the various 
11739         runtime-generated exception functions.
11740
11741         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11742         mono_arch_.. () functions.
11743         
11744 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11747
11748         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11749
11750         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11751         (mini_get_vtable_trampoline): Ditto.
11752
11753         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11754         code in the AOT case by returning the code size and a list of relocations to
11755         the caller.
11756
11757         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11758
11759 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11760
11761         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11762           clean the stack.
11763
11764         Contributed under MIT/X11 license.
11765
11766 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11767
11768         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11769         so the buffer size can be computed correctly. Fixes #404735.
11770
11771         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11772         normally as cfg->debug_info is already freed.
11773
11774 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * mini-amd64.c: For calls returning vtypes in registers, don't store
11777         the return address on the stack, instead allocate a separate local for
11778         it. Fixes #404729.
11779
11780 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11781
11782         * mini-trampolines.c, mini.h: Add an argument to
11783         mono_create_jit_trampoline_in_domain() for turning off the adding
11784         of the sync wrapper.
11785
11786         * mini.c: Use the JIT trampoline without sync instead of
11787         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11788         be patched.
11789
11790 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11791
11792         * driver.c: Turn on GSHARED optimization by default.
11793
11794 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11795
11796         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11797         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11798
11799         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11800         create a variant of the generic trampoline code callable from AOTed trampolines.
11801
11802         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11803         trampoline code callable from AOTed trampolines.
11804
11805         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11806
11807 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11808
11809         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11810         pass-through manner.
11811
11812         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11813         and don't fail sharing for them anymore.
11814
11815         * mini-exceptions.c: Handle exceptions in shared generic methods.
11816
11817         * generic-sharing.c: When checking the context of a generic
11818         method, also check its class's context.  Don't treat wrappers as
11819         sharable.
11820
11821         * mini-trampolines.c: Some code factored out to
11822         metadata/generic-sharing.c.  Handle the MRGCTX case.
11823
11824         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11825         we must deal with the method being of another instantiation of the
11826         class.  Add static rgctx invoke wrappers to generic methods.
11827
11828 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11829
11830         * mini.c: Provide all jit infos of generic shared methods with a
11831         generic jit info.
11832
11833         * mini-exceptions.c: Handle the new situation that a generic info
11834         might be available, but not info about the this/vtable/mrgctx
11835         variable.
11836
11837 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11838
11839         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11840         generic methods.
11841
11842 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11843
11844         * dominators.c (check_dominance_frontier): Fix a warning.
11845
11846         * mini.h: Add some missing prototypes.
11847
11848         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11849
11850         * driver.c (mono_jit_init_version): Correct the comments since the first
11851         argument should be the name of the root domain, not a filename.
11852
11853         * aot-runtime.c (make_writable): Error out if this is called while running
11854         with --aot-only.
11855         (load_aot_module): Ditto.
11856
11857         * aot-compiler.c: Really fix the computation of method indexes.
11858
11859         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11860         optimizations as this is no longer called frequently.
11861
11862         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11863         method and the invoke impl code and pass it to the delegate trampoline instead of
11864         just the delegate class.
11865
11866 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * aot-compiler.c: Fixup the computation of method indexes.
11869         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11870         the method builder infrastructure.
11871
11872         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11873         has no header.
11874
11875         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11876         mode, load the method right away instead of creating a trampoline.
11877
11878         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11879
11880         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11881         some checks a bit.
11882
11883 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11886         (mono_aot_load_method): Use method_index instead of method->token.
11887
11888         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11889         can handle icalls etc. properly.
11890
11891         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11892
11893         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11894
11895         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11896         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11897         JIT_ICALL_ADDR patch type.
11898
11899         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11900
11901         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11902         request flag.
11903         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11904
11905         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11906
11907 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11908
11909         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11910         domain->jit_code_hash.
11911
11912 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11913
11914         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11915
11916 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11917
11918         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11919         get_this_arg_from_call, let it compute it when needed.
11920
11921         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11922         gsctx from code only when needed.
11923
11924         * mini-trampolines.c (get_generic_context): Rename this to 
11925         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11926         it can be called by the arch backends.
11927
11928         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11929
11930 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11931
11932         * driver.c (mono_main): Add experimental --aot-only command line option.
11933
11934         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11935         set.
11936
11937 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11938
11939         * driver.c (DllMain): Remove mono_module_handle.
11940
11941         Contributed under MIT/X11 license.
11942
11943 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11946         for emitting methods which are not in the source assembly. Detect and report
11947         failure of assembling+linking.
11948         
11949         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11950
11951         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11952
11953 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11954
11955         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11956
11957 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * mini.h: Remove some obsolete prototypes.
11960
11961         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11962
11963 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11964
11965         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11966         supported by Visual Studio, so use alloca().
11967
11968 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11969
11970         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11971         Fixes #402585.
11972
11973 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11974
11975         * mini.c: Fail sharing of a generic method if it contains an open
11976         catch clause (because we don't pass MRGCTXs yet).
11977
11978 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11979
11980         * mini.c: When compiling a method with generic sharing, insert the
11981         method instantiated with an all-Object generic context into the
11982         jit info table, instead of the context of the first instantiation
11983         of the method we happen to compile.
11984
11985 2008-06-18  Martin Baulig  <martin@ximian.com>
11986
11987         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11988         `major_version' and `minor_version'.
11989
11990 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11991
11992         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11993         mono_method_is_generic_sharable_impl() takes an additional
11994         argument specifying whether to treat type variables as reference
11995         types.
11996
11997 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11998
11999         * mini.h: Removed obsolete prototypes.
12000
12001 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12002
12003         * mini.c: Don't fail generic sharing for initobj and sizeof - we
12004         already handle them.
12005
12006 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12007
12008         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
12009         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
12010         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
12011         tramp-x86.c: Added a MonoGenericContext* argument to
12012         mono_arch_get_unbox_trampoline() so that it can call other
12013         functions which require it.
12014
12015 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12016
12017         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
12018         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
12019         mono_arch_get_this_arg_from_call() takes a
12020         MonoGenericSharingContext* as well.
12021
12022 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12023
12024         * mini.c: Factor out code for emitting unbox into emit_unbox() and
12025         implement generic sharing of unbox.
12026
12027 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12028
12029         * mini.c: Don't compute the vtable to determine whether a field is
12030         special static, because it might not work for open types.
12031
12032 2008-06-17  Mark Probst  <mark.probst@gmail.com>
12033
12034         * mini.c: Removed the unused token_type and token_source arguments
12035         from get_runtime_generic_context_ptr().
12036
12037 2008-06-17  Marek Habersack  <mhabersack@novell.com>
12038
12039         * mini.c (ADD_BINOP): fix the build
12040
12041 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
12042
12043         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
12044         a widening op.
12045
12046 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12047
12048         * mini.h: Removed class relations enum that's not used anymore.
12049
12050 2008-06-16  Mark Probst  <mark.probst@gmail.com>
12051
12052         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12053
12054         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12055         the lazy fetch trampoline access code.
12056
12057 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12058
12059         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12060
12061 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12062
12063         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12064
12065         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12066
12067         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12068
12069 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12072         intrinsics.
12073
12074         * mini-ops.h: Add MIN/MAX_UN opcodes.
12075
12076         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12077         intrinsics.
12078
12079         * basic-math.cs: Add more min/max tests.
12080
12081         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12082
12083 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12084
12085         * mini.c: Small fix in the prologue of emit_castclass.
12086
12087 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12090
12091         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12092         do not work even for unsigned types. Fixes #400014.
12093
12094         * basic-math.cs: Add regression tests for unsigned Min/Max.
12095
12096 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12097
12098         * mini.c: Added additional context_used argument to several
12099         functions, which will be needed for sharing generic methods.  Use
12100         GET_RGCTX macro wherever appropriate.  Declare only one
12101         context_used in mono_method_to_ir().
12102
12103 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12104
12105         * mini.c, generic-sharing.c: Removed generic class relations.
12106
12107         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12108         functions due to MRGCTX changes.
12109
12110 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12111
12112         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12113         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12114         with calculated IMT.
12115
12116         * mini.c: Generic sharing of calls via generic interfaces.
12117
12118         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12119         generic method with non-constant MonoGenericContext*.  Instead,
12120         the context is taken out of the method itself.
12121
12122 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12123
12124         * mini.c: Generic sharing of ldvirtftn.
12125
12126 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12127
12128         * mini.c: Generic sharing of ldftn.
12129
12130 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12131
12132         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12133
12134 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12135
12136         * mini.c: Generic sharing of the special case of ldtoken followed
12137         by a call to GetTypeFromHandle.
12138
12139 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12140
12141         * mini.c: Generic sharing of box for nullable types.
12142
12143 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12144
12145         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12146         are passed on the stack. Fixes #324807.
12147
12148 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12149
12150         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12151         for the ArgValuetypeAddrInIReg case.
12152
12153         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12154         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12155
12156         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12157         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12158         local variable and pass the local variable by reference to the called method.
12159           
12160         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12161         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12162
12163         Contributed under MIT/X11 license.
12164
12165 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12166
12167         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12168
12169         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12170         everything.
12171
12172 2008-06-10  Martin Baulig  <martin@ximian.com>
12173
12174         * debug-mini.c
12175         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12176
12177 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12178
12179         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12180         possible error when no arguments are passed.
12181
12182         Contributed under MIT/X11 license.
12183
12184 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12185
12186         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12187         where the file name is NULL.
12188
12189 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini.c: Fix s390 build.
12192
12193 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * trace.c (mono_trace_parse_options): Fix warnings.
12196
12197         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12198
12199 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12200
12201         * mini.c (remove_block_if_useless): Avoid printing the method name.
12202         
12203         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12204         MONO_INST_NEW.
12205
12206         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12207         LMF. Not yet used.
12208
12209         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12210         translated code after it has been patched.
12211
12212 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12215         avoid problems during code patching on SMP systems.
12216         (emit_call): Avoid adding a patch info which is already added by 
12217         emit_call_body.
12218         (mono_arch_emit_exceptions): Ditto.
12219
12220 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12221
12222         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12223         MONO_TYPE_ISSTRUCT already checks for it.
12224
12225 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12226
12227         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12228           structs with floats on Winx64 the float registers are not used.  
12229           The integer registers are always used..
12230         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12231           only one register will be used and only if the size of the struct 
12232           is 1,2,4, or 8 bytes.
12233
12234         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12235           to work for Winx64.
12236
12237         Contributed under MIT/X11 license.
12238
12239 2008-06-05  Martin Baulig  <martin@ximian.com>
12240
12241         * debug-debugger.c (debugger_lookup_class): Also call
12242         mono_class_setup_methods() here; we're only called from RTI.
12243
12244 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12245
12246         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12247         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12248         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12249         Post-process object files and add dtrace-generated object, if necessary.
12250
12251         Contributed under MIT/X11 license.
12252
12253 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12254
12255         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12256         element class.
12257
12258         * mini.c: Generic sharing for unbox.any and castclass.
12259
12260 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12261
12262         * mini.c: Ignore tailcall prefix in shared generic code and when
12263         doing calls which require a vtable/rgctx argument.
12264
12265 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12266
12267         * mini.c: Don't free the JIT info.
12268
12269         * driver.c: Changes in the JIT info table testing code.
12270
12271 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12272
12273         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12274         interruption. Fix some warnings.
12275
12276         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12277         interruption_checkpoint.
12278
12279 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12280
12281         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12282         from embedding applications.
12283
12284 2008-06-02  William Holmes  <billholmes54@gmail.com>
12285
12286         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12287           reserving 32 bytes on the stack when making calls. 
12288
12289         Contributed under MIT/X11 license.
12290
12291 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12292
12293         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12294         the linear IL branch.
12295
12296         * driver.c: Print out more information for --version on arm.
12297
12298 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12301         bb_exit instead, since out of line bblocks might not actually be emitted
12302         out-of-line.
12303         
12304         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12305         maximum epilog size for out of line bblocks if tracing is enabled.
12306
12307         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12308
12309 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12310
12311         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12312
12313 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12314
12315         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12316         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12317         opcodes.
12318
12319 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12322         the 'value' to store is a constant.
12323
12324         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12325
12326         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12327         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12328
12329 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12332         for accessing method->generic_container.
12333
12334 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12337         
12338         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12339
12340         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12341
12342         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12343         fails.
12344
12345 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12346
12347         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12348
12349         * mini.c: Handle the case when mono_class_vtable () fails.
12350
12351 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12352         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12353         the stat profiler.
12354
12355 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12356
12357         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12358         together with domain sharing.
12359
12360 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12361
12362         * mini.c: Treat callvirts to final methods like non-virtual calls
12363         when doing generic sharing, i.e. look them up in the runtime
12364         generic context.
12365
12366 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12367
12368         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12369         with computed types (for generic sharing).
12370
12371         * mini.c: Generic sharing for mkrefany and refanyval.
12372
12373 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12374
12375         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12376         possible.
12377
12378         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12379         the generic sharing code.
12380         
12381         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12382         when needed.
12383
12384 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12385
12386         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12387
12388 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12389
12390         * driver.c: updated copyright date
12391
12392 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12395         needed.
12396
12397 2008-05-19  Martin Baulig  <martin@ximian.com>
12398
12399         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12400         pointing to the new `_mono_debug_using_mono_debugger' variable.
12401
12402         * driver.c
12403         (mono_main): Check mono_debug_using_mono_debugger() rather than
12404         the `MONO_INSIDE_MDB' environment variable to check whether we're
12405         inside the debugger.
12406
12407 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12408
12409         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12410         argument.
12411
12412 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12413
12414         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12415
12416         * mini.c: Added mini_assembly_can_skip_verification. This
12417         function checks if the assembly requested to skip verification. 
12418         Fixes part of #387274.
12419
12420 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12421
12422         * mini.c (mini_get_method): Disable the check for open generic classes when
12423         using generic sharing.
12424
12425         * generics.cs: Add a test for #387034.
12426
12427         * mini.c (mini_get_method): Check whenever the method class is an open generic
12428         type, and return NULL in that case, causing a verification error. Fixes
12429         #384123.
12430
12431 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12432
12433         * driver.c (mono_main): Revert r102623. The right
12434         thing to do is to enable the verifier under verifiable
12435         unless a --security flag was passed.
12436
12437         We need this non-trivial behavior for --verify-all otherwise
12438         mcs-compileall won't be able to use it. As it needs everything to
12439         be verified under validil.
12440
12441 2008-05-06  Martin Baulig  <martin@ximian.com>
12442
12443         Fix #383749.
12444
12445         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12446         (mono_debugger_thread_cleanup): Likewise.
12447         (mono_debugger_extended_notification): Likewise.
12448
12449 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12450
12451         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12452         against both inflated and non-inflated methods. We need to check against the
12453         generic definition for cases where the instantiated method is not visible.
12454         We need to check against the inflated types for cases where the instantiation
12455         changes any super type. This fixes #382986.
12456
12457         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12458         that check for visibiliy as generic params only appears as the type subject
12459         of tokens on call opcodes. Field manipulation and ldftn must always
12460         target an exact type.
12461
12462 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12463
12464         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12465         if no related --security flag is passed.
12466
12467 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12468
12469         * mini-arch.h: Prepare support for ppc64.
12470
12471         Contributed under MIT/X11 license.
12472
12473 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12474
12475         * aot-runtime.c: Prepare support for ppc64.
12476
12477         Contributed under MIT/X11 license.
12478
12479 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12480
12481         * mini-ops.h: Prepare support for ppc64.
12482
12483         Contributed under MIT/X11 license.
12484
12485 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12486
12487         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12488
12489         Contributed under MIT/X11 license.
12490
12491 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12494         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12495         assemblies on windows.
12496
12497 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12498
12499         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12500         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12501         * main.c: Use UTF-8 encoded command line instead of Windows default code
12502         page on Windows to support Unicode.
12503         * driver.c (DllMain): New function for mixed-mode assembly support.
12504         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12505         export __stdcall functions without decoration.
12506
12507         Contributed under MIT/X11 license.
12508
12509 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12510
12511         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12512         saving it very early.
12513
12514 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12515
12516         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12517         deleted.  The only way to access the new RGCTX is via the
12518         trampline.
12519
12520         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12521         vtable instead of the RGCTX to static methods.
12522
12523         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12524         accessing the new RGCTX.
12525
12526         * generic-sharing.c: There is no separation between self, type
12527         arguments and other types in the RGCTX anymore.
12528
12529 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12530
12531         * mini-amd64.c (add_general): Remove previous stack adjustment.
12532         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12533         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12534         for 32 bytes of stack space reserved for all calls.
12535         
12536         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12537         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12538         adjustment.
12539         
12540         Code contributed under MIT/X11 license.
12541
12542 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12543
12544         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12545         against the root definition, peeling out method and type instantiations.
12546         Cache verify success results, code that fails verification is still
12547         checked multiple times.
12548
12549 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12552
12553 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12554
12555         * mini-amd64.c (add_general): Always increment stack on Win64.
12556         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12557         on Win64.
12558         
12559         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12560         stack based argument handling on Win64.
12561         
12562         Code contributed under MIT/X11 license.
12563
12564 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12565
12566         * Makefile.am (version.h): Add support for git-svn.
12567
12568 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12569
12570         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12571         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12572         avoiding allocations and libc functions which might deadlock.
12573         
12574         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12575         'no-gdb-backtrace' option is set.
12576
12577         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12578
12579         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12580
12581 2008-04-21  Martin Baulig  <martin@ximian.com>
12582
12583         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12584         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12585
12586 2008-04-21  Martin Baulig  <martin@ximian.com>
12587
12588         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12589         `thread_vtable', `event_handler_ptr' and `event_handler'.
12590
12591 2008-04-21  Martin Baulig  <martin@ximian.com>
12592
12593         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12594         allows delayed initialization of the `executable_code_buffer' when
12595         attaching.
12596
12597 2008-04-21  Martin Baulig  <martin@ximian.com>
12598
12599         * mini.h (mono_debugger_create_notification_function): Removed.
12600         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12601
12602         * mdb-debug-info64.s
12603         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12604
12605         * mdb-debug-info32.s
12606         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12607
12608         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12609         currently only works on x86 and x86_64, so don't create it on ppc.
12610
12611 2008-04-21  Martin Baulig  <martin@ximian.com>
12612
12613         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12614
12615         * mini.c
12616         (mini_method_compile): In the fp elimination check, check
12617         `debug_options.mdb_optimizations' in addition to
12618         mono_debug_using_mono_debugger().       
12619
12620         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12621         disable some JIT optimizations which are only disabled when
12622         running inside the debugger.
12623         Added `--help-debug' option to describe the debugging options.
12624         (parse_debug_options): New static function to parse the `--debug'
12625         options, so we can easily add more stuff in future.
12626
12627 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12628
12629         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12630         the method has no body.
12631
12632 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12633
12634         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12635         assembly is not allowed in MSVC 64-bit compiler. 
12636         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12637         as we get floating point exceptions everywhere.
12638         
12639         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12640         correctly align arguments for call to throw_exception.
12641         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12642         
12643         Code contributed under MIT/X11 license.
12644
12645 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12646
12647         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12648
12649 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12650
12651         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12652
12653         * mini-amd64.c (NEW_INS): Set cil_code.
12654
12655         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12656         from mini-amd64.c so all debugger related logic is in one place.
12657
12658         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12659         later won't have a random ip assigned to them.
12660
12661 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12662
12663         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12664         the arch specific function initializes code_size.
12665         (mono_create_delegate_trampoline): Ditto.
12666
12667         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12668         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12669         platforms.
12670
12671         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12672         running under the debugger.
12673
12674         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12675         debugger.
12676
12677         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12678         debugger. Also move the disabling of optimizations here from driver.c.
12679         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12680         debugger.
12681
12682         * mini.h (MonoCompile): Add a few new flags.
12683
12684 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12687         so the cil_code field of created MonoInst's is properly set.
12688         (mini_select_instructions): Ditto.
12689
12690         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12691         (MONO_INST_NEW_CALL): Ditto.
12692
12693         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12694         in many places so the ins->cil_code field is properly initialized.
12695
12696         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12697         place.
12698
12699 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12700
12701         * mini.c (mini_method_compile): Print a different message when compiling a 
12702         shared method.
12703         
12704         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12705         > 1.
12706
12707 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12710         SSE2 instructions.
12711
12712         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12713         
12714 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12715
12716         * mini.c (handle_stack_args): Make this return void since its return value was
12717         never used. Also set cfg->unverifiable for invalid IL instead of calling
12718         G_BREAKPOINT ().
12719
12720 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12721
12722         * mini.c: Make sure "this" is live in catch clauses with type
12723         variables in shared generic code.
12724
12725 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12726
12727         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12728         generic_class_is_reference_type() to ensure the proper behaviour
12729         when sharing generic code and the type in question is a type
12730         argument.
12731
12732 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12733
12734         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12735         race conditions when printing thread dumps. Fixes #377738.
12736
12737 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12738         
12739         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12740         shows up when both MonoInst arguments can cause aliasig.
12741         There is likely no way in the current JIT to trigger this problem, but
12742         it showed up in the development of generics sharing, when in a new
12743         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12744         When the generics sharing code will be committed, its tests will be
12745         valid also for this bug.
12746
12747 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12750         PATCH_INFO_METHOD.
12751
12752         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12753         NULL.
12754
12755 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12758         use a more detailed exception message for InvalidCastException.
12759
12760         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12761
12762         * driver.c (mono_main): Add --debug=casts option to turn on better 
12763         InvalidCastException message details.
12764
12765         * mini.c (mini_get_debug_options): New helper function to return the address of
12766         the debug_options variable.
12767
12768         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12769         the jit_tls TLS variable.
12770
12771         * mini.c (mono_jit_tls): New TLS variable.
12772
12773         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12774         option is used.
12775
12776 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12777
12778         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12779
12780         * mini.c: Removed verifer related stuff, code moved to verify.c.
12781
12782         * driver.c: Using code from verify.c instead of mini.c.
12783
12784 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12787         longer valid.
12788
12789 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12790
12791         * mini.c (check_for_method_verify): Enabling verification of
12792         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12793         have been fixed.
12794
12795 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12798         caller saved registers as well.
12799         
12800         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12801         saved registers as well.
12802
12803 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12804
12805         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12806
12807         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12808         code.
12809
12810 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12813         to get_call_info.
12814         (get_call_info): Take a gsctx argument instead of 'cfg'.
12815
12816 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12819         mono_verify_all is set.
12820
12821         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12822
12823         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12824
12825 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12826
12827         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12828         an exception.
12829
12830         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12831         verifier and the code generated by the compiler.
12832
12833 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12834
12835         * mini.c: Generic sharing of the non-nullable case of the box
12836         instruction.
12837
12838 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12839
12840         * inssel.brg: Fix the build.
12841
12842         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12843
12844 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12845
12846         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12847         Array:Address. Fixes #372410.
12848
12849         * iltests.il.in: New tests for readonly prefix.
12850
12851 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12852
12853         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12854         mini-trampolines.c.
12855
12856         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12857         mini-exceptions.c.
12858
12859         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12860         
12861         * mini.c (mono_decompose_op_imm): New helper function.
12862
12863         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12864         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12865         return value.
12866
12867         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12868         mono_arch_output_basic_block. Fix warnings.
12869
12870         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12871         for now.
12872
12873 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12874
12875         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12876         since the extra frame is now detected automatically inside the loop.
12877
12878         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12879         opts which are now in mono_peephole_ins ().
12880         
12881         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12882
12883         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12884         frames and skip duplicate managed-to-native frames. Fixes #367665.
12885
12886         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12887         opts which are now in mono_peephole_ins ().
12888         (mono_arch_peephole_pass_2): Ditto.
12889
12890         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12891
12892         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12893         arch independent peephole optimizations.
12894
12895         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12896         opts which are now in mono_peephole_ins ().
12897
12898         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12899         
12900         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12901
12902         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12903         pattern.
12904
12905         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12906         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12907         opcode. 
12908
12909 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12910
12911         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12912         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12913         return value.
12914
12915         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12916         mono_arch_output_basic_block. Fix warnings.
12917
12918 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12921         conv.ovf.u.un.
12922
12923 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12924
12925         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12926         conv.ovf.u.un.
12927
12928         * iltests.il: Add new tests.
12929
12930 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12931
12932         * mini.c: Removed Windows version macros.
12933
12934 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12935
12936         * generic-sharing.c: Put reflection types in the extensible part
12937         of the runtime generic context.
12938
12939         * mini.c: Generic sharing of the GetTypeHandle special case of the
12940         ldtoken instruction.
12941
12942 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12945
12946         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12947         
12948         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12949         consistency with the other version on the linear IR branch.
12950
12951         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12952
12953         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12954
12955         * iltests.il.in: Add new tests.
12956
12957 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12960
12961         * iltests.il.in: Add new tests.
12962
12963 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12964
12965         * mini.c: Two variables with the same name were declared in
12966         nesting contexts and one wasn't initialized.  Fixed.
12967
12968 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12969
12970         * mini.c: Generic sharing of the initobj instruction.
12971
12972 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12973
12974         * mini.c: make the test to optimize ldtoken from typeof() more
12975         precise.
12976
12977 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12978
12979         * mini.c: Generic sharing of the initobj instruction for reference
12980         types.
12981
12982 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12983
12984         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12985         the mono_breakpoint_clean_code() code to perform bound checks.
12986
12987 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12988
12989         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12990         mono_arch_patch_callsite() to include the start of the managed method
12991         to be able to perform bound checks.
12992
12993 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12994
12995         * mini.c: Generic sharing for the isinst instruction.
12996
12997 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12998
12999         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13000         inssel-long32-mips.brg: Added opcodes for doing indirect calls
13001         with the runtime generic context argument.
13002
13003         * mini.c: Share calls to several types of unsharable methods by
13004         putting the address of the method code in the runtime generic
13005         context and doing an indirect call.
13006
13007         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13008         to switches.
13009
13010 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13011
13012         * generic-sharing.c: Change due to a change in the runtime genric
13013         context API.
13014
13015 2008-03-15  Martin Baulig  <martin@ximian.com>
13016
13017         * tramp-x86.c
13018         (mono_arch_nullify_class_init_trampoline): Add call to
13019         mono_breakpoint_clean_code() to make things work when running
13020         inside the debugger.
13021
13022         * tramp-amd64.c
13023         (mono_arch_nullify_class_init_trampoline): Add call to
13024         mono_breakpoint_clean_code() to make things work when running
13025         inside the debugger.
13026
13027 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * inssel-long.brg (reg): Fix 64 bit build.
13030
13031 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13032
13033         * mini.c, mini.h: Share static generic code by passing it an
13034         implicit argument pointing to the runtime generic context.
13035
13036         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
13037         inssel-long32-mips.brg: New opcodes for calling shared static,
13038         which need to be passed the runtime generic context.
13039
13040         * mini-amd64.c, mini-x86.c: Save the runtime generic context
13041         argument on the stack in the prologue if needed.  New function for
13042         finding the runtime generic context argument from the registers
13043         saved by the trampoline.
13044
13045         * mini-amd64.h, mini-x86.h: Specify which register to use for the
13046         runtime generic context argument.
13047
13048         * tramp-amd64.c: Also restore the register used for the runtime
13049         generic context argument.
13050
13051         * mini-trampoline.c: Resolve shared static calls by consulting the
13052         runtime generic context via the new argument.
13053
13054         * generic-sharing.c: Add an argument to sharability-checking
13055         functions that specifies whether type variables should be treated
13056         as sharable type arguments.
13057
13058         * inssel-x86.brg: Removed a superfluous, buggy rule.
13059
13060         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13061         to switches.
13062
13063 2008-03-14  Martin Baulig  <martin@ximian.com>
13064
13065         * debug-debugger.c (main_thread_handler): Call
13066         mono_runtime_run_main() without sending any notifications.
13067
13068         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13069
13070 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13073
13074 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13075
13076         * tramp-x86.c: Fixed register restore offsets in the trampoline
13077         code for ECX and EDX.
13078
13079 2008-03-12  Geoff Norton  <gnorton@novell.com>
13080
13081         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13082         different ucontext_t implementations.
13083         * exceptions-arm.c: Use the above defines to get exceptions working on 
13084         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13085         * mini-arm.c: Implement iPhone icache support (based on a patch by
13086         Luke Howard lukeh@padl.com)
13087
13088 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13089
13090         * mini.c: Enable generic sharing of calls to non-static
13091         non-interface non-generic non-value-type methods.
13092
13093         * mini-trampolines.c: Resolve calls from shared generic code.
13094
13095 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13098
13099         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13100
13101 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13102
13103         * mini.c: some fixes for the AOT compiler.
13104
13105 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * cpu-amd64.md: Add clob:1 to some float opcodes.
13108
13109 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13110
13111         * mini.h: Added MiniVerifierMode enumeration.
13112
13113         * mini.c: Added mini_verifier_set_mode to control
13114         the usage of the new verifier.
13115
13116         * mini.c (mono_method): Integrated the new verifier.
13117
13118         * driver.c: Extended --security option with validil and
13119         verifiable options to activate the new verifier.
13120
13121 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13124         optimization to ctors taking 0 or 2 arguments too.
13125
13126         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13127         a bit.
13128
13129         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13130
13131         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13132
13133 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13134
13135         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13136         non-aot case as well.
13137
13138         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13139
13140         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13141         changes.
13142
13143         * aot-compiler.c (encode_patch): Ditto.
13144
13145         * mini.h (G_MININT32): Fix the definition of this.
13146
13147 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13148
13149         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13150
13151         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13152
13153 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13156         methods returning vtypes in registers.
13157         (mono_arch_allocate_vars): Ditto.
13158
13159         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13160
13161         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13162
13163         * generics.cs: Add a test from the linear IR branch.
13164
13165         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13166
13167         * mini.c (inline_method): Cache failed inline attempts.
13168
13169 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13170
13171         * mini.c: For shared methods of generic classes put the location
13172         of "this" into the MonoGenericJitInfo.
13173
13174         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13175         register out of a MonoContext by register number.  Add the generic
13176         sharing context as an argument to mono_arch_find_this_argument().
13177
13178         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13179         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13180         for new arch function.
13181
13182         * mini-exception.c: Handle open exception clauses in shared
13183         generic code.
13184
13185         * mini-trampolines.c: Supply additional argument to
13186         mono_arch_find_this_argument().
13187
13188 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13189
13190         * Makefile.am (regtests): Run the bench.exe tests last.
13191
13192 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13193
13194         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13195         a bit.
13196
13197 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13198
13199         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13200         with MS.
13201
13202         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13203         
13204         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13205
13206         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13207         whose class has no cctor.
13208
13209         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13210
13211 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13212
13213         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13214         unverified.
13215
13216 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13219         to be in sync with the code on the linear IR branch.
13220
13221         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13222
13223         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13224
13225 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13228
13229         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13230
13231         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13232
13233         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13234
13235         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13236         
13237         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13238         body.
13239
13240 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13241
13242         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13243         OP_LOADR4_MEMBASE emission.
13244
13245         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13246         (mono_spillvar_offset_float): Ditto.
13247
13248         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13249
13250         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13251         emission.
13252
13253         * basic-long.cs: Add regression tests for them.
13254
13255         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13256         use.
13257         (mono_arch_allocate_vars): Fix representation of single-precision float
13258         argument.
13259         (mono_arch_output_basic_block): Ditto.
13260
13261         * inssel-mips.brg: Ditto, remove duplicate items.
13262
13263         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13264         arguments of tail calls as on other platforms.
13265         (mono_arch_output_basic_block): Handle tail calls.
13266
13267         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13268         register.
13269
13270         * objects.cs (test_5_pass_static_struct): Add test for it.
13271
13272         Contributed under MIT/X11 license.
13273
13274 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * Makefile.am: Use gmcs for compiling the regression tests.
13277
13278         * *.2.cs *.2.il: Rename to *.cs and *.il.
13279
13280 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * regalloc.h: Make the vassign array smaller.
13283
13284         * mini.c (mini_method_compile): Remove an unused field in cfg.
13285
13286         * mini-codegen.c: Add a bunch of micro optimizations.
13287
13288 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13289
13290         * regalloc.h: Remove some unused fields.
13291
13292 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13295
13296         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13297
13298 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13299
13300         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13301
13302         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13303         trampoline: Fetch an entry from the runtime generic context.  If
13304         it's NULL, jump to the actual trampoline to fill the runtime
13305         generic context.  Otherwise, return it.
13306
13307         * mini.c: Call the lazy fetch trampoline to get entries out of the
13308         runtime generic context.
13309
13310         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13311         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13312         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13313
13314 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13315
13316         * mini.c: Fetch data out of the extensible part of the runtime
13317         generic context instead of calling a helper function.
13318
13319         * generic-sharing.c: Some functions moved into
13320         metadata/generic-sharing.c.  Helper function for fetching other
13321         types now checks and asserts against extensible rgctx (just for
13322         debugging purposes - the helper function isn't called anymore
13323         unless for debugging).
13324
13325 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13328         for tail calls up to the point that the tests in iltests.exe run. Also add a
13329         dummy CKFINITE implementation.
13330         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13331         needed for trampoline LMF frames.
13332
13333         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13334         trampoline LMF frames.
13335
13336 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13337
13338         * mini.c (inline_method): clean any pending loader error when inlining fail.
13339         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13340
13341 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13342
13343         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13344
13345         * aot-runtime.c (decode_patch_info): Ditto.
13346
13347         * mini.c (mono_resolve_patch_target): Ditto.
13348         
13349         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13350         icall wrappers.
13351
13352         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13353         
13354         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13355         if it references an icall address.
13356
13357 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * cpu-s390x.md: Remove some more unused opcodes.
13360         
13361         * cpu-s390x.md: Remove some unused opcodes.
13362
13363         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13364         mono_op_imm_to_op ().
13365
13366         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13367         instead of a switch statement.
13368         
13369         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13370         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13371
13372         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13373         
13374         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13375
13376         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13377         -1.
13378
13379 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13382         opened. Fixes #362607.
13383
13384         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13385
13386         * iltests.il.in: Add a test for static methods in interfaces.
13387
13388 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * genmdesc.c (build_table): Fix a crash on older glib versions.
13391
13392         * cpu-sparc.md: Remove some unused opcodes.
13393         
13394         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13395         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13396
13397         * cpu-amd64.md: Remove some unused opcodes.
13398
13399         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13400         like the other opcodes.
13401
13402 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13405
13406         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13407
13408         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13409         variables 'cfg' instead of 'm' for consistency.
13410
13411         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13412
13413         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13414         argument holding the vtype return address, to avoid the ambigious use of
13415         cfg->ret for this purpose.
13416
13417         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13418
13419         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13420         
13421         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13422         new mono_print_ins () function which only takes one argument.
13423
13424 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13427         macro arguments.
13428
13429 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13430
13431         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13432
13433         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13434
13435         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13436         opcodes and other small changes.
13437
13438         * mini-ops.h: Add some new opcodes from the linear IR branch.
13439
13440         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13441
13442         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13443         opcodes, use the REG_MEMBASE opcodes instead.
13444         
13445         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13446         opcodes, use the REG_MEMBASE opcodes instead.
13447         
13448         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13449         linear IR branch.
13450
13451         * mini.c (mono_op_imm_to_op): New helper function.
13452
13453         * mini-ops.h: Add some opcodes from linear IR branch.
13454
13455 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13458         <tsv@solvo.ru>.
13459
13460 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13463         OP_ICONV_TO_R4/R8.
13464
13465         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13466
13467 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13468
13469         * aot-compiler.c (emit_method_code): Add an assert.
13470
13471         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13472         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13473         methods.
13474
13475 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13476
13477         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13478         some load/store opcodes so they are consistent. 
13479         (mono_arch_emit_prolog): Simplify some code.
13480
13481         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13482
13483         * objects.cs: Add tests for large argument offsets on ARM.
13484
13485         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13486         stack offsets. Fixes #359651.
13487
13488         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13489
13490         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13491
13492         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13493
13494         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13495
13496         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13497
13498         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13499         rid of CEE_CONV_R_UN.
13500
13501         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13502
13503 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13506
13507         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13508
13509         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13510
13511         * cpu-amd64.md: Remove some unused opcodes.
13512
13513         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13514
13515         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13516
13517         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13518         arch specific functions for its parts. Call the peephole pass after local
13519         regalloc so the prolog can compute a more accurate max_offset.
13520         
13521         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13522         the corresponding OP_I/OP_L opcodes.
13523
13524         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13525
13526         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13527
13528 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13531         as they are handled in mini.c.
13532
13533         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13534         
13535         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13536         case since it is handled in mini.c.
13537
13538         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13539
13540         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13541
13542         * *.c: Use the new opcodes in the IR and back end code.
13543
13544         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13545
13546         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13547
13548 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13549
13550         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13551         an assert because it has a race condition.
13552
13553 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13556
13557         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13558
13559         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13560
13561         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13562         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13563
13564 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13565
13566         * cpu-amd64.md (move): Correct the maximum size of move.
13567
13568 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13569
13570         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13571         the generic class init trampoline to return quickly if the class
13572         is already inited.
13573
13574 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13577         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13578
13579 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13580
13581         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13582         branch.
13583
13584 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * objects.cs: Add some soft-float tests.
13587
13588         * mini.c: Fix a couple more soft-float issues.
13589
13590         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13591
13592         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13593         avoid a REX prefix.
13594
13595 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13596
13597         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13598         exception happens while compiling a virtual method.
13599
13600 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13601
13602         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13603         
13604         * mini-sparc.c: Fix build.
13605
13606         * mini-sparc.c (get_call_info): Add support for generic sharing.
13607
13608         * mini-exceptions.c: Add a FIXME.
13609
13610 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13611
13612         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13613         altstack handling code.
13614
13615         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13616         
13617         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13618
13619         * mini-s390.c: Add support for generic sharing.
13620
13621         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13622         Fix CAS on s390.
13623         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13624
13625         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13626
13627         * mini-s390x.c: Add support for generic sharing.
13628         
13629         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13630         Fix CAS on ia64.
13631         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13632
13633         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13634         can be used since it takes a 16 bit signed immediate.
13635
13636         * inssel-s390x.brg: Fix OP_SETRET.
13637
13638         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13639
13640         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13641
13642         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13643
13644         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13645
13646         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13647         in one place.
13648
13649         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13650         stuff.
13651
13652         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13653         of the unused mono_arch_patch_delegate_trampoline stuff.
13654
13655 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13656
13657         * basic-long.cs: Move the fp related tests to basic-float.cs.
13658
13659         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13660
13661         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13662
13663         * basic-calls.cs: Add a test for proper float argument passing.
13664
13665         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13666         if the context corresponds to an exception received through a signal.
13667
13668         * exceptions.cs: Add a test for nullref handling at the start of a try
13669         clause.
13670
13671         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13672
13673         * jit-icalls.c (mono_break): New JIT icall.
13674
13675         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13676
13677         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13678
13679 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * cpu-*.md: Get rid of unused opcodes.
13682
13683         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13684
13685         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13686         by all platforms.
13687
13688         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13689         define.
13690
13691         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13692         the arch independent trampoline code in mini-trampolines.c.
13693
13694         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13695
13696         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13697
13698         * mini-s390.h: Remove an unused define.
13699         
13700         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13701         the arch independent trampoline code in mini-trampolines.c.
13702
13703         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13704
13705 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13708
13709         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13710
13711         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13712
13713         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13714
13715         * cpu-amd64.md: Use smaller sizes for int opcodes.
13716
13717         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13718
13719         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13720         objects.cs.
13721
13722         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13723         debugging.
13724
13725         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13726         instead of though a pointer to save an indirection when accessing elements of
13727         the array.
13728
13729         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13730         some typos.
13731         (NOT_IMPLEMENTED): New helper macro.
13732         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13733         of a bb.
13734
13735         * *.c: Use the new helper macro.
13736
13737 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13740
13741 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13744         stack slots.
13745
13746 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13747
13748         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13749         profiling is enabled.
13750         
13751         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13752         the end.
13753         (mono_arch_emit_prolog): Add more first bblock optimizations.
13754
13755         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13756         in order if possible.
13757         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13758         bblock, since the arguments are still in their original registers.
13759
13760         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13761
13762 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13765         as well.
13766
13767         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13768         offset 0.
13769
13770         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13771
13772         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13773         process async exceptions received while in unmanaged code.
13774
13775         * mini.c (mini_init): Install a callback with the runtime which will be called
13776         when a thread receives an async exception while in unmanaged code.
13777
13778         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13779
13780         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13781
13782 2008-01-16  Wade Berrier  <wberrier@novell.com>
13783
13784         * cpu-g4.md:
13785         * cpu-arm.md:
13786         * cpu-s390x.md:
13787         fix build
13788
13789 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13792         compilation with sun cc.
13793
13794         * cpu-*.md: Fix the build.
13795
13796         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13797
13798         * mini-amd64.h: Add some comments to the MonoLMF structure.
13799
13800         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13801         
13802         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13803         in the LMF structure if possible. This saves two instructions in the
13804         managed->native wrappers.
13805
13806         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13807
13808 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13809
13810         * generic-sharing.c: New type argument lookup code which uses the
13811         runtime generic context template.
13812
13813 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13816
13817         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13818         (mono_arch_output_basic_block): Fix localloc implementation.
13819
13820         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13821
13822         * mini-ia64.c (peephole_pass): Fix ia64 build.
13823
13824         * mini-amd64.c (peephole_pass): Fix a warning.
13825         
13826         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13827         at a constant offset from sp/fp.
13828
13829         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13830         instead of obtaining it from *lmf in the managed method case.
13831
13832 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13833
13834         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13835
13836 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13837
13838         * mini.h (MonoInstList): New type.
13839         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13840         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13841         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13842         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13843         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13844         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13845         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13846         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13847         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13848         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13849         MONO_INST_LIST_FOR_EACH_ENTRY,
13850         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13851         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13852         mono_inst_list_first, mono_inst_list_last,
13853         mono_inst_list_next, mono_inst_list_prev): New instruction
13854         list handling interfaces.
13855         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13856         list head 'ins_list'.
13857         (MonoInst): Replace next pointer with list head 'node'.
13858         (MonoCallInst): Make 'out_args' a MonoInstList.
13859         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13860         (MonoCompile): Delete reverse_inst_list and
13861         reverse_inst_list_len.
13862         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13863         mono_arch_lowering_pass, mono_arch_local_regalloc,
13864         mono_arch_output_basic_block, mono_arch_emit_prolog):
13865         Convert to new instruction lists.
13866         (insert_after_ins): Delete.
13867         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13868         instruction lists.
13869         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13870         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13871         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13872         mono_emulate_opcode, mono_emit_load_got_addr,
13873         inline_method, mono_method_to_ir, mono_print_bb_code,
13874         print_dfn, decompose_pass, nullify_basic_block,
13875         replace_out_block_in_code, remove_block_if_useless,
13876         merge_basic_blocks, move_basic_block_to_end,
13877         try_unsigned_compare, optimize_branches, mono_print_code,
13878         mini_select_instructions, remove_critical_edges): Likewise.
13879         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13880         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13881         mono_arch_output_basic_block, mono_arch_emit_prolog):
13882         Likewise.
13883         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13884         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13885         mono_arch_output_basic_block): Likewise.
13886         (inst_list_prepend, insert_after_ins): Delete.
13887         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13888         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13889         instruction lists.
13890         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13891         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13892         mono_arch_emit_prolog): Likewise.
13893         * cfold.c (mono_constant_fold): Likewise.
13894         * liveness.c (visit_bb, mono_analyze_liveness,
13895         optimize_initlocals): Likewise.
13896         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13897         * graph.c (mono_draw_code_cfg): Likewise.
13898         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13899         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13900         mono_ssa_cprop): Likewise.
13901         * abcremoval (get_relations_from_previous_bb, process_block):
13902         Likewise.
13903         * local-propagation (mono_cprop_invalidate_values,
13904         mono_local_cprop_bb): Likewise.
13905         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13906         peephole_pass, mono_arch_output_basic_block,
13907         mono_arch_emit_prolog): Likewise.
13908         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13909         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13910         mono_arch_emit_prolog): Likewise.
13911         (insert_after_ins): Delete.
13912         * aliasing.c (print_code_with_aliasing_information,
13913         mono_build_aliasing_information, mono_aliasing_deadce):
13914         Convert to new instruction lists.
13915         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13916         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13917         mono_arch_local_regalloc, mono_arch_output_basic_block):
13918         Likewise.
13919         (insert_after_ins): Delete.
13920         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13921         peephole_pass, mono_arch_output_basic_block): Convert to
13922         new instruction lists.
13923         * mini-codegen (InstList, inst_list_prepend,
13924         insert_after_ins): Delete.
13925         (insert_before_ins, get_register_force_spilling,
13926         get_register_spilling, free_up_ireg, free_up_reg,
13927         create_copy_ins, create_spilled_store, alloc_int_reg,
13928         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13929         to new instruction lists.
13930         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13931         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13932         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13933         (insert_after_ins): Delete.
13934         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13935         mono_arch_local_regalloc, mono_arch_output_basic_block,
13936         mono_arch_call_opcode): Convert to new instruction lists.
13937         (insert_after_ins): Delete.
13938         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13939         peephole_pass, mono_arch_output_basic_block,
13940         mono_arch_emit_prolog): Convert to new instruction lists.
13941
13942 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13943
13944         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13945
13946         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13947         Fixes #353182.
13948
13949         * Makefile.am (version.h): Make this work with non-bash shells.
13950
13951 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13954
13955 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13956
13957         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13958         the InitializeArray optimization.
13959
13960 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * mini.c driver.c: Don't include os/gc_wrapper.h.
13963
13964 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13965
13966         * mini.c (print_jit_stats): Print GC statistics if available.
13967
13968 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13971
13972 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13973
13974         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13975
13976 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13977
13978         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13979         
13980         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13981
13982         * driver.c (mono_main): Ditto.
13983
13984 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13985
13986         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13987
13988         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13989         in the vtable can't be encoded.
13990         (compile_method): Ditto.
13991
13992 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13993
13994         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13995         defined.
13996
13997         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13998         lmf->rbp.
13999
14000         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
14001         the top LMF entry belongs to the current method.
14002
14003         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
14004
14005 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14006
14007         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
14008         
14009         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
14010
14011         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
14012
14013         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
14014
14015         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
14016
14017         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
14018         implementation.
14019
14020         * basic-float.cs: Add an ulong->double cast test.
14021
14022 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * mini.c (mono_method_to_ir): Fix a warning.
14025
14026 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini-ops.h: Add OP_SWITCH.
14029
14030         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
14031         CEE_SWITCH in back-end code, use OP_SWITCH instead.
14032
14033 2007-12-11  Geoff Norton  <gnorton@novell.com>
14034
14035         * mini-s390x.c: Minor change to the MAX() define to allow
14036         it to compile with other gcc versions.
14037
14038 2007-12-11  Geoff Norton  <gnorton@novell.com>
14039
14040         * cpu-s390x.md:
14041         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
14042
14043 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14044
14045         exceptions-arm.c (mono_arch_get_restore_context): Restore
14046         the frame pointer.
14047
14048         exceptions-arm.c (throw_exception): Save the frame pointer.
14049         This is a partial fix for #323747. Only the client side is
14050         fixed.
14051
14052 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14053
14054         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14055         was using an unrelated variable to log the class which
14056         needed the cctor to be called. This was crashing on arm.
14057
14058 2007-12-09  Robert Jordan  <robertj@gmx.net>
14059
14060         * mini-x86.c (mono_arch_emit_epilog):
14061         Consider all kinds of 64-bit types. Fixes #323114.
14062
14063 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14064
14065         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14066
14067 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14068
14069         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14070
14071 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14072
14073         * mini.c: run type ctor before allocating an object, not only
14074         when running it's constructor method (fixes at least part of bug #342507).
14075
14076 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14077         
14078         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14079         
14080         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14081         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14082         function.
14083
14084         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14085         mono_generic_class_init_trampoline () the same as it is done with the other
14086         trampolines.
14087
14088         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14089         aot-runtime.c aot-compiler.c: Implement AOT support.    
14090
14091 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14092
14093         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14094         build for archs which don't have the vtable trampoline defined
14095         yet.
14096
14097 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14098
14099         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14100
14101         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14102
14103         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14104
14105         * tramp-<ARCH>.c: Use the new helper function.
14106
14107 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14108
14109         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14110         trampoline call, which takes a vtable argument.
14111
14112         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14113         OP_TRAMPCALL_VTABLEs like other calls.
14114
14115         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14116         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14117         call.  Implemented a support function which fetches the vtable
14118         from a register set.
14119
14120         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14121         Implemented a generic class init trampoline, using the
14122         OP_TRAMPCALL_VTABLE opcode.
14123
14124         * mini.c: Implemented static field access when sharing generic
14125         code.  This implies initing the class using the new
14126         OP_TRAMPCALL_VTABLE call.
14127
14128 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14129
14130         * mini.c: Don't compile methods with sharing enabled if their
14131         classes are disabled for sharing.
14132
14133 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14134
14135         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14136         opcodes. Fixes #346563.
14137
14138         * objects.cs: Add a new test.
14139
14140         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14141
14142         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14143         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14144
14145 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14146
14147         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14148
14149 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14150
14151         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14152         code stream.
14153
14154 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14155
14156         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14157
14158         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14159         optimization in the AOT case.
14160         
14161 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14164         
14165         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14166
14167         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14168
14169         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14170
14171         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14172         is created by the inlined delegate ctor.
14173
14174         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14175
14176         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14177
14178 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14179
14180         * cpu-x86.md: Fix the length of ckfinite.
14181
14182 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14185         
14186         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14187         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14188
14189         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14190
14191         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14192         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14193
14194 2007-11-28  Martin Baulig  <martin@ximian.com>
14195
14196         * mini-x86.c
14197         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14198         after creating the trampoline.
14199
14200 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14203
14204         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14205         the same version.
14206
14207         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14208         instead of the calling method to help AOT.
14209
14210         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14211
14212 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14213
14214         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14215         is defined.
14216
14217 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14218
14219         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14220         
14221         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14222         (encode_method_ref): No need to handle generic method definitions specially.
14223
14224         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14225
14226         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14227         decode_klass_info.
14228
14229         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14230         encode_klass_info.
14231         (compile_method): Enable generic sharing.
14232
14233 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14234
14235         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14236         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14237
14238         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14239         generic code.
14240
14241         * mini-trampolines.c: Fix a warning.
14242
14243         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14244         NEW_PCONST.
14245         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14246         (generic_class_is_reference_type): Remove unused function.
14247
14248         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14249         in the generic vtable trampoline case.
14250
14251         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14252         
14253         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14254         return an AOT method based on a vtable slot.
14255
14256         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14257
14258         * mini.c (mini_get_vtable_trampoline): Export this.
14259
14260 2007-11-22  Martin Baulig  <martin@ximian.com>
14261
14262         * debug-debugger.h
14263         (MonoDebuggerInfo): Move `debugger_version' up.
14264
14265 2007-11-22  Martin Baulig  <martin@ximian.com>
14266
14267         * mini-amd64.c
14268         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14269
14270         * mini-trampolines.c
14271         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14272         after compiling the method.
14273
14274 2007-11-20  Martin Baulig  <martin@ximian.com>
14275
14276         * debug-mini.c
14277         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14278         (mono_debugger_remove_breakpoint): Likewise.
14279         (mono_debugger_check_breakpoints): Likewise.
14280
14281         * debug-debugger.c: Implement the new breakpoint interface here.
14282
14283 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14284
14285         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14286         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14287
14288         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14289
14290 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14291
14292         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14293
14294         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14295         mini.c.
14296
14297         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14298         mini.c.
14299
14300         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14301         returning a vtype in a register.
14302
14303         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14304         here from the arch specific code.
14305
14306         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14307         mini.c.
14308
14309         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14310         (mono_arch_emit_prolog): Increment maximum prolog size.
14311
14312         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14313         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14314
14315         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14316         MonoGenericSharingContext.
14317
14318         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14319         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14320
14321 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14322
14323         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14324         which extract fields out of the runtime generic context.  Full
14325         sharing of the NEWARR opcode.
14326
14327 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14328
14329         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14330         --enable-minimal=ssa.
14331
14332 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14333
14334         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14335         mono_marshal_get_delegate_invoke () signature change.
14336
14337 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14338
14339         * mini.c: Removed the shared context in favor of the generic
14340         sharing context.  Allocate the MonoJitInfo structure with room for
14341         the generic sharing context if it's needed.
14342
14343         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14344         domain-internals.h now.
14345
14346         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14347
14348         * generic-sharing.c: Several changes for working without a shared
14349         context and instead operating on open types instead.
14350
14351 2007-11-12  David S. Miller  <davem@davemloft.net>
14352
14353        * inssel-sparc.brg: Fix double instruction emit.
14354
14355 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14358         Get/Set/Address methods.
14359         
14360         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14361         mono_marshal_get_delegate_invoke signature change.
14362
14363 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14364
14365         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14366         This can happens with dynamic methods. Fixes the other bug in #322722.
14367
14368 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14369
14370         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14371         BX call sequence.
14372
14373         * mini-arm.c (arm_patch): Implement patching of BX call
14374         sequence. Fixes one of the bugs in #322722.
14375
14376 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14377
14378        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14379        under Linux.  We only need to flush every 32-byte cache line.    
14380
14381 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14382
14383         * mini.c:
14384         move_basic_block_to_end: Add branches when needed, eventually creating
14385         a new BB.
14386         optimize_branches: added a parameter that tells if it's ok to create
14387         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14388         and avoid calling move_basic_block_to_end when it's not ok.
14389         Fixes bug 318677.
14390
14391 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14392
14393         * mini.c: Abort inlining call to InitializeArray if something
14394         looks wrong.  Let the icall handle it, which now has proper safety
14395         checks.
14396
14397 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14398
14399         * mini.c (mono_spill_call): add support for soft-float.
14400
14401         * mini.c (mono_method_to_ir): add support for soft-float
14402         to inlined functions that return float.
14403
14404         * mini.c (mono_method_to_ir): add support for soft-float
14405         to cee_stsfld opcode on float fields.
14406
14407 2007-11-05  Geoff Norton  <gnorton@novell.com>
14408
14409         * mini-x86.h: Fix the structure access for X86 Leopard.
14410
14411
14412 2007-11-05  Martin Baulig  <martin@ximian.com>
14413
14414         * mini-trampolines.c
14415         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14416         after compiling the method to notify the debugger.
14417
14418 2007-11-05  Martin Baulig  <martin@ximian.com>
14419
14420         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14421
14422 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14425         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14426
14427 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14428
14429         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14430         native-to-managed wrappers.
14431         
14432 2007-11-01  Geoff Norton  <gnorton@novell.com>
14433
14434         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14435         members.
14436
14437 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14438
14439         * mini.c, mini-x86.c: when getting back from unmanaged code
14440         to managed via a marshaled delegate we also need to set the
14441         right domain.
14442
14443 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14444
14445         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14446         for amd64.
14447
14448 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14449
14450         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14451         let the debugger or other external agents to tell the JIT when
14452         a sw breakpoint has been inserted in the code that the JIT needs
14453         to be able to inspect.
14454
14455 2007-10-31  Martin Baulig  <martin@ximian.com>
14456
14457         * debug-debugger.h
14458         (MonoDebuggerInfo): Remove `runtime_class_init'.
14459
14460 2007-10-30  Martin Baulig  <martin@ximian.com>
14461
14462         * debug-mini.h
14463         (mono_debugger_thread_created): Added `MonoThread *' argument.
14464         (mono_debugger_extended_notification): New public method.
14465         (mono_debugger_trampoline_compiled): New public method.
14466
14467         * debug-mini.c
14468         (MonoDebuggerThreadInfo): Added `thread' and
14469         `extended_notifications' fields.
14470
14471         * debug-debugger.c
14472         (debugger_executable_code_buffer): New static variable.
14473
14474         * debug-debugger.h
14475         (MonoDebuggerInfo): Added `executable_code_buffer',
14476         `executable_code_buffer_size', `breakpoint_info_area',
14477         `breakpoint_table' and `breakpoint_table_size'.
14478
14479 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14480
14481         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14482         that IP  either is an unused value or the vtable pointer. IMT 
14483         calls use vtable + offset now. Reduced by almost half the size
14484         of IMT entries.
14485
14486 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14487
14488         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14489         defines to access param registers. Replace long usage with
14490         gsize as sizeof(long) != sizeof(void*) on Win64.
14491
14492         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14493         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14494         instead of non-existant _GetAddressOfReturnAddress.
14495
14496         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14497         param registers. Save/restore %rdi and %rsi in MonoLMF.
14498
14499         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14500         param registers. Modify (throw_exception) signature to take 
14501         %rdi and %rsi on Win64. 
14502
14503         Code is contributed under MIT/X11 license.
14504
14505 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14506
14507         * helpers.c: unlink debugging output files.
14508
14509 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * mini.c: Move mono_create_ftnptr () to object.c.
14512
14513 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14514
14515         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14516         optional. This function can now be used to disassemble code generated
14517         outside the JIT such as trampolines and IMT thunks.
14518
14519         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14520
14521         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14522         vtable pointer from a ldr instruction.
14523
14524         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14525         new IMT call sequence.
14526
14527         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14528         call sequence for interface invocations.
14529
14530         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14531         for imt support. This function is empty since IMT on ARM requires no
14532         special handling on the IR side.
14533
14534         * mini-arm.c (mono_arch_find_imt_method): added, required for
14535         imt support.
14536
14537         * mini-arm.c (mono_arch_find_this_argument): added, required
14538         for imt support.
14539
14540         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14541         a ldr instruction to load a value stored in the code stream.
14542
14543         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14544         for imt support.
14545
14546
14547 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * mini.c (mini_init): Install the jump trampoline callback.
14550
14551 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14552
14553         * mini-trampolines.c: handle synchronized methods with the common
14554         vtable trampoline (bug #335601).
14555
14556 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14557
14558         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14559
14560         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14561         64 bit platforms.
14562
14563         * mini-ia64.h mini-ia64.c: Add support for IMT.
14564
14565         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14566         prolog. Fixes #331958.
14567
14568 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14569
14570         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14571
14572 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14573
14574         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14575         trampoline.
14576
14577 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14578
14579         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14580         trampoline.
14581
14582 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14583
14584         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14585         trampoline.
14586
14587 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14588
14589         * mini-trampolines.c: changed the magic rampoline to understand
14590         the common vtable trampoline method: the method to invoke is
14591         determined by the vtable displacement of the call.
14592
14593 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14594
14595         * mini.c, mini.h: register the common vtable trampoline if the
14596         architecture supports it.
14597
14598 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14599
14600         * cpu-amd64.md: use the correct max length for tls_get.
14601
14602 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14603
14604         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14605         CEE_STELEM_ANY. Fixes #333696.
14606
14607 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14608
14609         * exceptions-x86.c: provide more graceful handling of the case where
14610         we followed a bogus function pointer from managed code (bug #332866).
14611
14612 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14613
14614         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14615         replaces the generic_shared flag and will carry more information
14616         in the future.
14617
14618         * generic-sharing.c: Added mini_type_stack_size() which allows
14619         allows open types if given a generic sharing context.
14620         mini_get_basic_type_from_generic() takes a
14621         MonoGenericSharingContext* instead of a MonoCompile* now.
14622
14623         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14624         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14625         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14626         changes above.  Just passing arguments through to the right
14627         places.
14628
14629 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini-arm.c: unify the call emission to emit_code_seq().
14632
14633 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14634
14635         * tramp-arm.c: reduced the trampoline size.
14636
14637 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14638
14639         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14640         variable handling out of arch-specific code.
14641
14642 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini-arm.c: implemented fast delegate dispatch.
14645
14646 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14647
14648         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14649         that fp elimination is turned off if the space required by locals is too
14650         big. Fixes #331958.
14651
14652 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14653
14654         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14655         ARM to the new style trampoline.
14656
14657 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14658
14659         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14660
14661         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14662
14663 2007-10-09  Martin Baulig  <martin@ximian.com>
14664
14665         * debug-debugger.h
14666         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14667         `field_info_offset_offset'.     
14668
14669 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14670
14671         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14672         removed more internal usage of the r11 register and made it available
14673         to the register allocator.
14674
14675 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14676
14677         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14678         when sharing generics and treat type variables as references.
14679
14680 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14681
14682         * mini-ppc.c: started removing the internal uses of register r11
14683         to eventually allow the register allocator to manage it as an
14684         additional available register.
14685
14686 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14687
14688         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14689
14690 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14691
14692         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14693         specific trampolines as they are not performance critical as a jump
14694         target (maybe align as before only for AOT code?). This saves about
14695         200 KB of native code on x86 for monodevelop startup.
14696
14697 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14698
14699         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14700         monodevelop startup.
14701
14702 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14705
14706         * mini-sparc.h mini-sparc.c: Implement IMT support.
14707
14708         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14709         its smaller and doesn't clobber sparc_g1.
14710
14711         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14712
14713 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14714
14715         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14716
14717 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14718
14719         * mini-ppc.c: implemented fast delegate invocation.
14720
14721 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14722
14723         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14724
14725 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14726
14727         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14728         code to the new style trampoline in preparation for IMT support.
14729
14730 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14733         systems already. This also reduces the specific trampiline sizes and
14734         prepares for the use of r12 as the IMT identifier register.
14735
14736 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14737
14738         * mini-mips.h: endianess fix (simplified from a patch by
14739         Thomas Kunze <thommy@tabao.de>, bug #323737).
14740
14741 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14742
14743         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14744         to access ucontext fields and enable netbsd support
14745         (partially from Magnus Henoch <mange@freemail.hu>).
14746
14747 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14748
14749         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14750         use the preprocessor from the CPP env var if it is set.
14751
14752 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14753
14754         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14755         code, before interface_offset gets used.
14756
14757 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14760         mono_class_setup_vtable () before accessing klass->vtable.
14761
14762 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14763
14764         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14765         hackish.
14766
14767 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14768
14769         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14770         IMT slots (this saves hundreds of KB of memory in programs like
14771         IronPython and Monodevelop).
14772
14773 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14774
14775         * mini.c: print the delegate counter.
14776
14777 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini-x86.c: make it easier to enable the debugging code for IMT
14780         slots.
14781
14782 2007-09-28  Martin Baulig  <martin@ximian.com>
14783
14784         * debug-debugger.h
14785         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14786         `mono_method_klass_offset' and `mono_method_token_offset'.
14787
14788 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14789
14790         * mini.c: First generics sharing implementation.  Can only share
14791         in very simple cases.  If sharing doesn't work it falls back to
14792         dedicated compilation.
14793
14794         * mini.h: Flag in MonoCompile to specify whether generic
14795         compilation is shared.  Flags enum for marking which generic inst
14796         of a context is used.  Prototypes for helper functions.
14797
14798         * generic-sharing.c: Helper functions for generic method sharing.
14799
14800         * optflags-def.h: Optimization flag (gshared) for enabling generic
14801         method sharing added.
14802
14803         * Makefile.am: generic-sharing.c added.
14804
14805 2007-09-19 Daniel Nauck <dna@mono-project.de>
14806
14807         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14808
14809 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14810         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14811         fixes bug 325507.
14812
14813 2007-09-19  Martin Baulig  <martin@ximian.com>
14814
14815         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14816         mono_debug_cleanup() is now part of mono_cleanup().
14817
14818 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * driver.c (mono_main): Fix a warning.
14821
14822 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * aot-compiler.c: Optimize various parts when processing large assemblies.
14825         Fixes ##325568.
14826
14827         * mini.c (mono_patch_info_hash): Improve hash function.
14828
14829 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14830
14831         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14832         
14833         Code is contributed under MIT/X11 license.
14834
14835 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14836
14837         * mini.c (mini_init): Fix a leak.
14838
14839         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14840
14841 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14842
14843         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14844
14845 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14846
14847         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14848
14849 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14850
14851         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14852         variance tests.
14853
14854         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14855
14856         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14857
14858         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14859
14860         * aot-runtime.c (decode_patch_info): Ditto.
14861
14862 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14863
14864         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14865         static case. Cache delegates in architecture specific code, 
14866         based on number of parameters.
14867         
14868         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14869         in architecture specific code, based on number of parameters.
14870         
14871         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14872         caching happen in architecture specific code now.
14873         
14874         Code is contributed under MIT/X11 license.
14875
14876 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14877
14878         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14879         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14880         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14881
14882         Code is contributed under MIT/X11 license.
14883
14884 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14885         * mini.c: (mono_thread_abort) Fixed bug #82416.
14886
14887 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14888
14889         * mini.: hook the new managed GC allocation feature into the JIT.
14890
14891 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14892
14893         * mini.c: implementation for the new runtime tls opcode.
14894
14895 2007-09-11  Martin Baulig  <martin@ximian.com>
14896
14897         * debug-debugger.h
14898         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14899         `mono_method_inflated_offset'.
14900
14901 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14902
14903         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14904         async exceptions into a method.
14905
14906         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14907         purpose of testing whenever the unwinder works at every instruction.
14908
14909 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini.c: check accessibility of method used in ldftn (fixes
14912         bug #82635).
14913
14914 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14917
14918         * inssel.brg: Fix a warning.
14919
14920 2007-09-03  Martin Baulig  <martin@ximian.com>
14921
14922         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14923         now takes the `main_method' as argument.
14924
14925 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14926
14927         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14928
14929 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14930
14931         * driver.c: include the cil-coff.h header on Windows.
14932         
14933         Code is contributed under MIT/X11 license.
14934
14935 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14936
14937         * mini.c, driver.c: don't include the cil-coff.h header.
14938
14939 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14940
14941         * mini.c: flag places that needs fixes fo soft-float support.
14942
14943 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14946         endian systems (partially from Dean Jenkins, bug #81924).
14947
14948 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14949
14950         * mini.c (check_linkdemand): Remove embedded reference object in
14951         call to LinkDemandSecurityException.
14952         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14953         with an IntPtr instead of a reference object.
14954
14955 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14956
14957         * mini.c (handle_initobj): Handle alignment properly.
14958
14959         * inssel.brg (mini_emit_memset): Ditto. 
14960
14961         * inssel.brg (mini_emit_memcpy): Ditto. 
14962
14963         * inssel-sparc.brg: Ditto.              
14964
14965         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14966
14967 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14968
14969         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14970         exceptions raised in unmanaged code. Fixes part of #82594.
14971
14972 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14973
14974         * mini.c (mono_method_to_ir), declsec.c
14975         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14976
14977 2007-08-22  Martin Baulig  <martin@ximian.com>
14978
14979         * debug-mini.h
14980         (MonoDebuggerThreadInfo): New typedef.
14981         (mono_debugger_thread_table): New global variable.
14982         (mono_debugger_thread_created): New public function.
14983         (mono_debugger_thread_cleanup): New public function.
14984
14985         * debug-debugger.h
14986         (MonoDebuggerInfo):
14987         - removed `get_current_thread' and `lookup_assembly'.
14988         - removed `data_table'.
14989         - added `thread_table'.
14990
14991         * mini.c
14992         (mono_thread_start_cb): Call mono_debugger_thread_created().
14993         (mono_thread_attach_cb): Likewise.
14994         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14995         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14996         initial domain.
14997
14998         * driver.c (mono_main): Move mono_debug_init() up, before calling
14999         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
15000
15001 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15002
15003         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
15004         together when passing several arguments of type double (gives a small
15005         speedup and saves a few bytes of generated code).
15006
15007 2007-08-20  Jb Evain  <jbevain@novell.com>
15008
15009         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
15010
15011 2007-08-20  Jb Evain  <jbevain@novell.com>
15012
15013         * mini.c (mono_method_to_ir): throw MethodAccessException
15014         and FieldAccessException instead of InvalidProgramException.
15015
15016 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15017
15018         * mini.c: CoreCLR security checks.
15019
15020         * mini.h: Removed MonoSecurityMode (moved to
15021         metadata/security-manager.h) and mono_security_mode global var
15022         (replaced by set/get functions in security-manager.h).
15023
15024         * driver.c: Added "core-clr-test" security mode for testing.  Used
15025         set-function for setting security mode.
15026
15027 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15028
15029         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
15030         the new jit_info_table.
15031
15032         * driver.c: Test code for the new jit_info_table (enabled by the
15033         define MONO_JIT_INFO_TABLE_TEST).
15034
15035 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
15036
15037         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15038         detection of call <REG> instruction sequence. Fixes build on freebsd.
15039
15040 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
15041
15042         * mini-exceptions.c: Fix a warning.
15043
15044 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15045
15046         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
15047         stack overflow handling code on amd64 too.
15048
15049         * mini-exceptions.c (mono_setup_altstack): Make this use 
15050         mono_thread_get_stack_bounds ().
15051
15052         * mini-x86.h: Disable sigaltstack on solaris x86.
15053
15054 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15055
15056         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15057
15058 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15059
15060         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15061
15062 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15065
15066         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15067
15068 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15069
15070         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15071         due to alignment.
15072
15073 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15074
15075         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15076         to be emitted (bug #82281).
15077
15078 2007-08-01  Martin Baulig  <martin@ximian.com>
15079
15080         Merged the `debugger-dublin' branch.
15081
15082         * debug-debugger.h (MonoDebuggerInfo):
15083         Removed the `old_*' compatibility entries.
15084         Added `debugger_version' and `data_table'.
15085         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15086         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15087
15088         * debug-mini.c
15089         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15090         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15091         instead of a `gconstpointer'.
15092         (mono_debugger_insert_method_breakpoint): Return a
15093         `MonoDebugMethodAddressList *'.
15094
15095 2007-06-28  Martin Baulig  <martin@ximian.com>
15096
15097         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15098
15099 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15100
15101         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15102         __builtin_frame_address () since it is broken on older gcc versions.
15103
15104 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15105
15106         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15107         on the stack overflow handling and made the managed stack overflows
15108         catchable in most cases using soft guard pages.
15109         * exceptions-x86.c: added code to restore the protection in the soft
15110         guard pages at the end of exception handling.
15111
15112 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15115
15116 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15117
15118         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15119         exception handling.
15120
15121 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15124         signal handling support until it has been ported to the new mechanism.
15125         * mini.c: fixed stack overflow detection and use the new
15126         architecture code  to handle signals on the altstack.
15127
15128 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15129
15130         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15131         stack overflows on the alt stack.
15132
15133 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15134
15135         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15136         stack overflows on the alt stack.
15137
15138 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * exceptions-ppc.c: cleanup preparing for altstack support.
15141
15142 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15143
15144         * exceptions-arm.c: cleanup preparing for altstack support.
15145
15146 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15147
15148         * mini.c (print_jit_stats): Output hazard pointer stats.
15149
15150 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15151
15152         * driver.c, mini.c: Replaced security mode flags with a single
15153         enum variable.
15154
15155 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15156
15157         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15158
15159 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15160
15161         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15162         (which doesn't do anything yet) for activating Core CLR
15163         (Silverlight) security.
15164
15165 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini-codegen.c: work around a possible gcc bug on arm.
15168
15169 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15170
15171         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15172         message for platforms that don't support AOT compilation.
15173
15174 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15175
15176         * mini.h, mini.c, driver.c: temporary smcs hack.
15177
15178 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15179
15180         * mini-arm.h, mini-arm.c: arm EABI fixes.
15181
15182 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15183
15184         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15185         case.
15186
15187         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15188         trampolines taking a method argument.
15189
15190         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15191
15192         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15193         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15194
15195         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15196         JIT compilation throws an exception. Fixes #82050.
15197
15198 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15199
15200         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15201         with the MONO_EXCEPTION_ defines.
15202
15203 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15206         #82117.
15207         
15208         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15209         the cause of an assertion.
15210
15211 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15212
15213         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15214         removed.
15215
15216 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15219         assert. Should fix #82103.
15220
15221 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15222
15223         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15224         here too. Fixes #82095.
15225
15226         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15227         addresses.
15228
15229         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15230
15231         * mini-amd64.h: Enable IMT for amd64.
15232         
15233         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15234
15235 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15236
15237         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15238
15239 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15240
15241         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15242         as soon as check_linkdemand sets an exception_type.
15243
15244 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15245
15246         * mini-x86.c: fixed offsets for IMT call sequence.
15247         * mini-x86.h: enable IMT again.
15248
15249 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * trace.c (mono_trace_enter_method): Decode MonoType too.
15252
15253         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15254
15255         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15256
15257         * mini-amd64.c: Add preliminary IMT implementation.
15258         
15259 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15260
15261         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15262         understand the new IMT-base interface invocation (thanks to
15263         Daniel Nauck for the report and the remote debugging session).
15264
15265 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15266
15267         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15268
15269 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15272
15273 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15274
15275         * mini-trampolines.c: implement AOT IMT support.
15276         * mini-x86.h: enable IMT support for wider testing.
15277
15278 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15279
15280         * inssel.brg (emit_imt_argument): Add aot support here.
15281
15282         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15283
15284 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15285
15286         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15287         of the IMT implementation, partially from massi, with my
15288         implementation of the bsearch sequence. Disabled by default until
15289         the AOT code is implemented.
15290
15291 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15294
15295         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15296
15297 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15298
15299         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15300         arch-independent IMT JIT code from Massimiliano
15301         Mantione (massi@ximian.com) with small cleanups from me.
15302
15303 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15304
15305         * Makefile.am: fix svn invocation to get the svn revision to be
15306         independent of the local language (build fix).
15307
15308 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15309
15310         * mini.c (inline_method): Reset cfg->exception_type if the
15311         inlining is aborted.  Fixes: 82049.
15312
15313 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15314
15315         * mini.c: remove assert from exception handling code when exception_ptr
15316         is not set.
15317
15318 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15319
15320         * mini.c (mono_codegen): Add an assert.
15321
15322         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15323         enter and leave code.
15324         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15325
15326 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15327
15328         * mini-ppc.c: fixed memory corruption for localloc(0)
15329         (bug #81852).
15330
15331 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15332         
15333         * mini.c: Fix warnings.
15334
15335 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15336
15337         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15338         to emit better double->int conversions.
15339
15340 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15341
15342         * mini.c: the provided Min/Max optimizations are valid for unisgned
15343         ints.
15344
15345 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15346
15347         * 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
15348
15349 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15350
15351         * mini.c (mono_running_on_valgrind): Add support for reporting the
15352         method and  its boundaries to valgrind.
15353
15354 2007-06-28  Martin Baulig  <martin@ximian.com>
15355
15356         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15357
15358 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15359
15360         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15361
15362         * generic.2.cs: Add new test case.
15363
15364 2007-06-25  Martin Baulig  <martin@ximian.com>
15365
15366         Merged the `debugger-dublin' branch.
15367
15368         * debug-mini.c
15369         (mono_debugger_insert_method_breakpoint): New public method.
15370         (mono_debugger_remove_method_breakpoint): Likewise.
15371         (mono_debugger_check_breakpoints): New static method.
15372         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15373
15374         * debug-debugger.h (MonoDebuggerInfo):
15375         Renamed (to keep backward compatibility in the vtable):
15376         `insert_breakpoint' -> `old_insert_breakpoint'.
15377         `remove_breakpoint' -> `old_remove_breakpoint'.
15378         `create_string' -> `old_create_string'.
15379         `lookup_class' -> `old_lookup_class'.
15380         `lookup_type' -> removed; changed into a dummy field.
15381         `lookup_assembly' -> `old_lookup_assembly'.
15382         Added (same functionality, but different signature):
15383         `create_string', `lookup_class', `lookup_assembly'
15384         Added new:
15385         `get_method_addr_or_bpt', `remove_method_breakpoint',
15386         `runtime_class_init'.
15387
15388         * debug-debugger.c: Merged the `debugger-dublin' branch.
15389
15390 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15393         well.
15394         (peephole_pass): Likewise.
15395
15396 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15397
15398         * driver.c: hopefully make setaffinity work also for ancient
15399         versions of linux.
15400
15401 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15402
15403         * driver.c : win32 build fix.
15404
15405 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15406
15407         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15408         processor if it is set.
15409
15410 2007-06-21  Martin Baulig  <martin@ximian.com>
15411
15412         * debug-mini.h: New file.
15413
15414         * debug-mini.c
15415         (mono_debugger_insert_breakpoint_full): Moved here from
15416         ../metadata/mono-debug-debugger.c.
15417         (mono_debugger_remove_breakpoint): Likewise.
15418         (mono_debugger_breakpoint_callback): Likewise.
15419
15420 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15421
15422         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15423         changes in MonoGenericClass.
15424
15425 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15426
15427         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15428
15429 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15430
15431         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15432         removal of MonoGenericMethod.
15433
15434 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15435
15436         * mini-exceptions.c: hooks for the exception events profiling API.
15437
15438 2007-06-14  Randolph Chung  <tausq@debian.org>
15439
15440         * Makefile.ma: Add hppa target.
15441         * mini-arch.h: Include mini-hppa.h
15442         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15443         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15444         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15445
15446 2007-06-14  Randolph Chung  <tausq@debian.org>
15447
15448         * inssel.brg: Add rules for "chained" compare-branch operations so that
15449         a single compare op can affect multiple branches.  Adjust cost for
15450         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15451         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15452         cost for some rules so that they can more easily be overridden by
15453         per-arch rules (with fixes from lupus).
15454         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15455
15456 2007-06-13  Randolph Chung  <tausq@debian.org>
15457
15458         * mini-ops.h: Reorder branch ops so that they match the order of the
15459         corresponding CEE_* ops.  The code expects them this way.
15460         Add new ops for HPPA target.
15461         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15462
15463 2007-06-13  Randolph Chung  <tausq@debian.org>
15464
15465         * mini-exceptions.c: Handle cases where the stack grows towards
15466         larger addresses.
15467         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15468
15469 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15470
15471         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15472         counter.
15473         * driver.c: explain where a non-matching corlib is found.
15474
15475 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15476
15477         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15478
15479 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15480
15481         * mini-exceptions.c: Generate a method profile leave event during
15482         an exception to ensure that the profiler gets notified.
15483
15484 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15485
15486         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15487         branch.
15488
15489         * cpu-amd64.md: Add long_and/or/xor opcodes.
15490
15491 2007-06-06  Wade Berrier  <wberrier@novell.com>
15492
15493         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15494         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15495         length of instruction shr_imm (expected 8, got 10)
15496
15497 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15500
15501 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15502
15503         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15504         MonoInternalHashTable again (fixed bug in the internal hash table
15505         code).
15506
15507 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15508
15509         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15510         Have to figure out what makes it crash the SWF regression.
15511
15512 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15513
15514         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15515
15516 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15517
15518         * mini.c: optimize out the type check when storing null in a
15519         reference array.
15520
15521 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15522
15523         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15524         MonoInternalHashTable.
15525
15526 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15527
15528         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15529         signed integer methods.
15530
15531 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15534         permanently since the current approach doesn't work.
15535
15536 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15537
15538         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15539         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15540
15541 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15542
15543         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15544         the sreg2==rdx case.
15545         
15546         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15547         account if it contains a rex prefix.
15548         (peephole_pass): Handle OP_FMOVE as well.
15549
15550 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15551
15552         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15553         as it causes regressions.
15554
15555 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15556
15557         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15558         static case as well.
15559
15560         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15561
15562         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15563         (mono_arch_get_this_arg_from_call): Ditto.
15564
15565         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15566
15567         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15568         invoke_impl field.
15569
15570         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15571         (mono_arch_get_this_arg_from_call): Ditto.
15572
15573         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15574         
15575         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15576         try to create optimized invoke code and use that for further invocations. 
15577         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15578
15579         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15580
15581 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15582
15583         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15584         sealed classes or methods.
15585         *devirtualization.cs: tests for the new optimization
15586
15587 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15590         by the update_volatile () function.
15591
15592 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15593
15594         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15595         require it.
15596
15597         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15598
15599 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15600
15601         * mini.c: Add configure checks for header files.
15602         * mini-x86.c: Add configure checks for header files.
15603         * trace.c: Add configure checks for header files.
15604         * aot-runtime.c: Add configure checks for header files.
15605         * aot-compiler.c: Add configure checks for header files.
15606         * driver.c: Add configure checks for header files.
15607         * mini-codegen.c: Add configure checks for header files.
15608         
15609         Code is contributed under MIT/X11 license.
15610
15611 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15612
15613         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15614         icompare_imm -128 + op_iclt. Fixes #81703.
15615
15616 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15617
15618         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15619
15620 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15621
15622         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15623         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15624         so that all isinst checks now use "interface_bitmap".
15625
15626 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15627
15628         * cpu-amd64.md (jmp): Fix a warning.
15629
15630         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15631
15632         * basic.cs: Add new regression test.
15633
15634         * basic.cs: Remove test which is now in basic-long.cs.
15635
15636         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15637
15638         * basic-long.cs: Add new test.
15639         
15640 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15641
15642         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15643
15644 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15645
15646         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15647
15648         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15649         places.
15650         
15651         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15652         throwing code a bit.
15653
15654         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15655         the exception throwing code a bit.
15656
15657         * mini-x86.c (get_call_info): Allocate result from a mempool.
15658
15659 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15660
15661         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15662
15663         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15664
15665         * mini.h (MonoCompile): Add 'token_info_hash' field.
15666
15667         * mini.c: Save token->method associations during compilation so the AOT 
15668         compiler can use it.
15669         
15670         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15671         which reference generic classes and methods.
15672
15673 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15674
15675         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15676
15677         * aot-compiler.c (compile_method): Fix a typo in a comment.
15678
15679         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15680
15681         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15682         everything generic.
15683
15684         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15685
15686 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * mini.h (MonoCompile): Add 'args' field.
15689
15690         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15691         into cfg->args.
15692
15693         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15694
15695 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15698
15699         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15700
15701         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15702         opcodes for some opcodes.
15703
15704         * mini.h *.brg *.c: Use the new opcodes.
15705
15706 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15707
15708         * mini.h: Bumped aot revision.
15709
15710         * inssel.brg: modified code generation of type checks for interfaces
15711         to use the new "MonoClass.interface_bitmap" instead of the old
15712         "MonoClass.interface_offsets".
15713
15714 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15715
15716         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15717
15718 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15721         64 bit platforms.
15722
15723 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15724
15725         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15726
15727 2007-04-27  Wade Berrier  <wberrier@novell.com>
15728
15729         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15730         mini.h) to fix build.
15731
15732 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15733
15734         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15735         
15736         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15737         causes the corlib unit tests to fail.
15738
15739 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15740
15741         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15742
15743         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15744
15745         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15746         opcodes to the comparison relations.
15747
15748         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15749         opcodes to their types.
15750         
15751         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15752
15753         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15754         it in cfg->arch.cinfo.
15755
15756         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15757
15758         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15759         cfg->cil_offset_to_bb.
15760
15761 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15762
15763         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15764         created becase of initlocals.
15765
15766 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15767
15768         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15769         Sergey Tikhonov <tsv@solvo.ru>.
15770
15771 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15772
15773         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15774
15775 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15776
15777         * cpu-s390.md (break): Correct the length of break instruction.
15778
15779 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15780
15781         * mini.c: fix a couple of soft-float issues and comments.
15782
15783 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15784
15785         * trace.c (is_filenamechar): - is also a filename char.
15786
15787 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15788
15789         * mini-s390.c: Correct checking for enum type in return value processing.
15790
15791 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15792
15793         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15794         (version.h): Makefile is in the build directory.
15795
15796 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15797
15798         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15799
15800 2007-04-11  Martin Baulig  <martin@ximian.com>
15801
15802         * mini.c (can_access_member): Fix handling of generic classes;
15803         fixes #81259.
15804
15805 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15806
15807         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15808
15809 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15810
15811         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15812
15813 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15814
15815         * mini-codegen.c: make sure the right spill amount is
15816         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15817
15818 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15819
15820         * mini-ppc.c: fixes for the fp_branch_nan test.
15821
15822 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15823
15824         * basic.cs: Comment out new test which still fails on ia64.
15825
15826 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15827
15828         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15829
15830 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15831
15832         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15833
15834 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15837         on 64 bit machines. Fixes part of #80738.
15838
15839         * basic.cs: Add regression test.
15840
15841 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * inssel.brg basic.cs: Revert previous change to fix build.
15844
15845         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15846         platforms.
15847         
15848         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15849
15850         * basic.cs: Add new regression test.
15851
15852 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15853
15854         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15855         many arguments.
15856
15857 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15858
15859         * cpu-s390x.md: Correct length of break instruction.
15860
15861 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15862
15863         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15864         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15865
15866 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15867
15868         * *.c: Begin WIN64 port.
15869         * mini.c:  Use correct register in profiler.
15870         * mini-amd64.c: No inline assembly on Win64.
15871         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15872         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15873         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15874         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15875         mono_arch_ip_from_context for Win64.
15876         
15877         Contributed under MIT/X11 license.
15878
15879 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15880
15881         * exceptions-amd64.c (seh_handler): Ditto.
15882
15883         * exceptions-x86.c (seh_handler): Fix a memory leak.
15884
15885 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15886
15887         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15888         mini-s390x.c: fixed peephole optimizations to deal
15889         correctly with 1 and 2 byte reload avoidance.
15890
15891 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15892
15893         * cpu-s390.md, cpu-s390x.md: update localloc length.
15894
15895 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15896
15897         * cpu-g4.md: added missing descriptions.
15898
15899 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15900
15901         *  Makefile.am: Add support so the tail tests are not executed on
15902         PowerPC as that is a known limitation of the PowerPC port.
15903
15904 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15905
15906         * runmdesc.bat:  Move to msvc directory.
15907         
15908 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15909
15910         * runmdesc.bat:  Run executable that was produced by the current
15911         target and sent via an argument.
15912         
15913 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15914
15915         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15916         #81102.
15917
15918         * generics.2.cs: Add regression test.
15919
15920 2007-03-09  Wade berrier  <wberrier@novell.com>
15921
15922         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15923
15924 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15927         AOT code depends on this.
15928
15929 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15930
15931         * mini.c: more precise tracking of types in the eval stack
15932         (part of fix for bug #81044).
15933
15934 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15935
15936         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15937
15938         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15939
15940 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15941
15942         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15943
15944         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15945
15946 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15947
15948         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15949         a pointer on 64 bit systems. Fixes #80190.
15950
15951         * iltests.il: Add new regression test.
15952
15953 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15954
15955         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15956
15957 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15958
15959         * trace.c: Remove an erroneous alignemnt check when tracing.
15960           Fixes --trace on OSX86.
15961
15962 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15963
15964         * mini-$(arch).h: initialize SP in context for all the archs.
15965
15966 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15967
15968         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15969         regressions in the thread tests.
15970
15971 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15972
15973         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15974         - fixed implementation of LOCALLOC opcode
15975         - implemented non-un compare for floats
15976         - code cleanup
15977         - implementation of FDIV and CKFINITE opcodes
15978         - fixes for latest mono updates
15979         - additional arch opcodes
15980
15981 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15982
15983         * Makefile.am: simplify and merge rules for cross-compilation.
15984
15985 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15986
15987         * local-propagation.c: Actually *apply* the fix for bug 80591...
15988
15989 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15990
15991         * mini-exceptions.c: backuot part of the last change
15992         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15993
15994 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15995         * inssel.brg: Fix bug 59286.
15996
15997
15998 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15999
16000         * mini-exceptions.c: patch from Zoltan to correctly check for
16001         stack boundaries (using the stack register, not the frame register),
16002         fixes bugs #80724, #79717.
16003
16004 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
16005
16006         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
16007         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
16008
16009         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
16010         presence of frame pointer elimination.
16011
16012 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
16013         
16014         * mini-x86.h: NetBSD UCONTEX_REG defines.
16015
16016 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
16017
16018         * inssel-amd64.brg: Fix amd64 build.
16019
16020 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
16021
16022         * mini.h: remove extern to workaround what looks likes gcc bug 26905
16023         on amd64.
16024
16025 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
16026
16027         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
16028         ends.
16029
16030         * mini-<ARCH>.c: Use mono_is_regsize_var ().
16031
16032 2007-01-30 Mark Mason <mason@broadcom.com>
16033
16034            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
16035            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
16036            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
16037            beginning support for CEE_JMP [not quite working yet]
16038            * tramp-mips.c: LMF handling now works
16039         
16040 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
16043
16044         * mini.h (NULLIFY_INS): New macro.
16045
16046 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16047
16048         * mini.c: statistical profiler fix for windows, patch
16049         from Tor Lillqvist (tml@novell.com).
16050
16051 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
16052         * local-propagation.c: Fix bug 80591.
16053
16054 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16055
16056         * Makefile.am: put back the --export-dynamic option as with
16057         the previous gmodule flags (thanks to Robert Jordan).
16058
16059 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16060
16061         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16062
16063         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16064         simplify and speed up the local register allocator. Also rename some fields
16065         like iassign->vassign.
16066         
16067         * regalloc.c: Remove some functions which are no longer used since their
16068         inlined version is in mini-codegen.c.
16069         
16070         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16071
16072         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16073
16074 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16075
16076         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16077         narrowing. Fixes #80622.
16078
16079         * iltests.il: Add new regresssion test. 
16080
16081 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16082
16083         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16084         debug-debugger.c, debug-debugger.h: warning fixes.
16085         * driver.c: updated copyright year and made it fit in one line.
16086
16087 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16088
16089         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16090
16091 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16092
16093         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16094
16095         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16096
16097         * iltests.il: Add new test for bug #80507.
16098
16099 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16100
16101         * mini-arm.h: use soft-float also on vfp for now.
16102
16103 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16104
16105         * mini.c: fix some more soft-float issues.
16106
16107 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16108
16109         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16110
16111 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16112         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16113         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16114         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16115
16116 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16117
16118         * mini-arm.c: typo fix.
16119
16120 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16121
16122         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16123
16124 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16125
16126         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16127         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16128
16129         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16130
16131         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16132
16133         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16134         
16135         * inssel.brg: Fix a warning.
16136
16137         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16138
16139         * abcremoval.c ssa.c ssapre.c: Update after this change.
16140         
16141         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16142
16143         * dominators.c (df_set): Use mono_bitset_union_fast.    
16144
16145 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16146
16147         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16148         mini-codegen.c: reduce relocations and memory usage for the cpu
16149         description.
16150
16151 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16152
16153         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16154
16155         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16156         to reduce their size.
16157
16158 2007-01-19 Mark Mason <mason@broadcom.com>
16159
16160         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16161         * mini-mips.c: more configuration macros, support long conditional branches, additional
16162         asserts, fix epilog instrumentation.
16163         * mini-mips.h: use standard stack walk
16164         * cpu-mips.md: increase size of div, rem and conditional branches
16165         
16166 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16167
16168         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16169         to cpu spec data.
16170
16171 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16172
16173         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16174         (compile_method): Ditto.
16175
16176         * aot-runtime.c (decode_klass_info): Ditto.
16177
16178         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16179         needed by the code generated by inssel.brg. Also fix a warning.
16180
16181 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16182
16183         * mini.c: deal with enums that become genericinsts by
16184         being nested in a generic class (bug #79956).
16185
16186 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16187
16188         * mini.c: match the generic definition to check for
16189         private access with generic types (bug #78431).
16190
16191 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16192
16193         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16194         to make life easier for people cross-compiling that insist on not
16195         using scratchbox.
16196
16197 2007-01-17 Mark Mason <mason@broadcom.com>
16198
16199         * inssel-long.brg: patch to deal with mips missing flags
16200         * inssel-long32-mips.brg: implement overflow checks
16201         * insset-mips.brg: implement overflow checks
16202         * mini-mips.h: implement conditional exception handling
16203         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16204           Remove unused code, minor cleanups.
16205         * exceptions-mips.c: minor cleanups
16206         * mini-ops.h: add mips conditional exception ops
16207         * cpu-mips.md: add mips conditional exception ops
16208
16209         
16210 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16211
16212         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16213         to deal with mips missing of flags.
16214
16215 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16216
16217         * exceptions-ppc.c: execute fault handlers.
16218
16219 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16220
16221         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16222
16223 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16224
16225         * mini.c: handle also floating point values in initialize_array.
16226
16227 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16228
16229         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16230         array initialization and make it conditional on the intrins option.
16231
16232 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16233
16234         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16235         relocations and put the patch info names close to the enum definition.
16236
16237 2007-01-15 Mark Mason <mason@broadcom.com>
16238
16239         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16240
16241 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16242
16243         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16244
16245 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16246
16247         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16248
16249 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16250
16251         * Makefile.am: distribute the mips sources.
16252
16253 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16254
16255         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16256         directly.
16257
16258 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16259
16260         * cpu-x86.md: back out for now as this triggers other regressions.
16261
16262 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16263
16264         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16265         to eax:edx, so ecx can't get allocated to them (bug #80489).
16266
16267 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16268
16269         * mini.c, mini-exceptions.c: enabled running fault handlers
16270         (bug #80469).
16271
16272 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16273
16274         * driver.c: If nothing fail, do not use the string "failed",
16275         because it makes it very annoying to view test result logs on the
16276         web. 
16277
16278 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16279
16280         * debug-debugger.c (mono_debugger_main): Rename "main" to
16281         "main_method" to prevent a warning.
16282
16283         Remove a warning for unused field.
16284
16285 2006-12-28  Martin Baulig  <martin@ximian.com>
16286
16287         * debug-debugger.c
16288         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16289
16290 2006-12-22  Martin Baulig  <martin@ximian.com>
16291
16292         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16293         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16294         seperate `.mdb_debug_info' section, so we can access it from the
16295         debugger even if the binary is stripped.
16296
16297         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16298         from the `.mdb_debug_info' here to prevent the linker from
16299         removing that section.
16300
16301         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16302         mdb-debug-info64.s.
16303
16304 2006-12-19  Robert Jordan  <robertj@gmx.net>
16305
16306         * mini-x86: enable the code to return small structures in
16307         registers for FreeBSD as well. Fixes bug #80278.
16308         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16309
16310 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16311
16312         * mini-x86.c: align the stack when calling the profiler
16313         function instrumenting the prolog (on OSX).
16314
16315 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16316
16317         * mini.c: emit a break opcode where Debugger.Break () is called.
16318
16319 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16320
16321         * mini.c (mono_method_to_ir): Provide useful information on this
16322         assert, to prevent others from debugging like I did.
16323
16324 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16325
16326         * mini.c: enable code which was incorrectly commented
16327         (bug #80235).
16328
16329 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16330
16331         * mini-x86.c: enable on OSX, too, the code to return small
16332         structures in registers.
16333
16334 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16335
16336         * mini-x86.c: remove the use of the dynamic code manager here, too.
16337
16338 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16339
16340         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16341         mono_debugger_create_notification_function() to use
16342         mono_global_codeman_reserve () instead of a dynamic code manager.
16343
16344 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16345
16346         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16347         ves_array_element_address() jit icall and use a generated
16348         managed method instead (which is about 4 times faster for a rank 3
16349         array access).
16350
16351 2006-11-29  Mark Mason  <mason@broadcom.com>
16352
16353         * basic-calls.cs: additional tests for passing
16354         structures as function arguments.
16355
16356 2006-11-29  Mark Mason  <mason@broadcom.com>
16357
16358         * mini-mips.h: disable custom exception handling
16359         * mini-mips.c: throw/rethrow should use jalr to call
16360         exception stubs.  Fixed bug with passing structures
16361         by value. More support for tracing floating point
16362         functions.
16363
16364 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16365
16366         * mini.c: fixed typo in the soft-float ldind.r4 handling
16367         (bug #80086).
16368
16369 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16370
16371         * mini.c, mini.h, driver.c: added --runtime command line
16372         option to select a different runtime than the autodetected one.
16373         * jit.h: added API for embedders to initialize with a specific
16374         runtime version.
16375
16376 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16377
16378         * mini.c: handle also boxing of r4 values (bug #80024).
16379
16380 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16381
16382         * mini-ppc.c: force indirect calls until we reserve
16383         enough address space for all the generated code.
16384
16385 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16386
16387         * exceptions-arm.c: workaround bugs in the libc definition
16388         of struct ucontext.
16389
16390 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16391
16392         * inssel.brg: fixes from me and Mark Mason.
16393
16394 2006-11-23  Dick Porter  <dick@ximian.com>
16395
16396         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16397         semaphore display now we've fixed the initial value
16398
16399 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16400
16401         * inssel.brg: partially revert the last change to fix the build.
16402
16403 2006-11-21  Mark Mason  <mason@broadcom.com>
16404
16405         * inssel.brg: Add and use compare-and-branch macros to support
16406         architectures that do not have condition code registers (ie. MIPS).
16407         * *-mips.{c,brg,md}: Fix copyright statements
16408
16409 2006-11-20  Mark Mason  <mason@broadcom.com>
16410
16411         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16412         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16413         * mini.h: Added declaration for mono_print_ins()
16414         * mini-codegen.c: added ins_spec initializer for MIPS
16415         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16416         vreg to be virtual and hreg to be non-virtual.
16417         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16418         is not yet working/implemented correctly.
16419         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16420         non-static, fixup calls to print_ins() from other parts in the file.
16421
16422 2006-11-20  Mark Mason  <mason@broadcom.com>
16423
16424         * basic-calls.cs: added tests for passing structures as arguments
16425         to calls.
16426
16427 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16428
16429         * inssel-long32.brg: optimize signed division by power of two.
16430
16431 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16432
16433         * mini-arm.c: added support for interworking with thumb code
16434         (mono must be still be built using the ARM instruction encoding).
16435
16436 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16437
16438         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16439         verifier has different rules for it.   Fixes a few verifier issues
16440         in the test suite.
16441
16442         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16443         at the end, so people know what happened.
16444
16445 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16446
16447         * brach-opts.c: in optimize_exception_target() make sure we
16448         are in a catch clause (fixes bug #79871).
16449
16450 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16451
16452         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16453         more soft-float support fixes.
16454
16455 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16456
16457         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16458         that are passed half on the stack and half in registers.
16459
16460 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16461
16462         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16463         more mips integration work from Mark E Mason 
16464         <mark.e.mason@broadcom.com>.
16465
16466 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16467
16468         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16469         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16470         tramp-mips.c: added sources for the mips port, not
16471         integrated in the build yet. Contributed by
16472         Mark E Mason <mark.e.mason@broadcom.com>.
16473
16474 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16475
16476         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16477
16478 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16479
16480         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16481         put the soft-float rules in its own file since it seems to
16482         break s390 compilation.
16483
16484 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16485
16486         * mini-arm.c: fixed wrnings.
16487
16488 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16489
16490         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16491         inssel-arm.brg: ARM support for soft-float.
16492
16493 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16494
16495         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16496         loads and stores of 32 bit fp values.
16497
16498 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16499
16500         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16501
16502         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16503         works. Fixes #79852 and #79463.
16504
16505 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16506
16507         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16508         more soft-float support WIP and fixes.
16509
16510 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16511
16512         * mini-arm.c: some VFP updates.
16513
16514 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16515
16516         * mini-exceptions.c: 0 is a valid local var offset in some
16517         architectures, don't assert (bug #78508).
16518
16519 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16520
16521         * exceptions-arm.c: fixed off by one error in stack walk code.
16522
16523 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16524
16525         * mini.h, mini.c: more precise tracking of type load exceptions.
16526
16527 2006-11-03  Robert Jordan  <robertj@gmx.net>
16528
16529         * Makefile.am: [WIN32] Add monow.exe target.
16530         * driver.c: [WIN32] Don't detach the console when debugging.
16531         Fixes bug #79797.
16532         
16533 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16534
16535         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16536
16537 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16538
16539         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16540
16541         * driver.c (mini_regression): Fix --regression with AOT.
16542
16543         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16544
16545 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16546
16547         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16548
16549         * mini-sparc.h: Don't use sigaction on sparc/linux.
16550
16551         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16552
16553         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16554
16555         * mini-exceptions.c: Add proper include files for getpid ().
16556
16557 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16558
16559         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16560         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16561         method.
16562
16563         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16564         name cache to reduce its size.
16565
16566         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16567
16568 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16569
16570         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16571         the mono_lmf TLS variable.
16572
16573         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16574         trampoline lmf frames.  
16575
16576         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16577
16578 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16579
16580         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16581         the mono_lmf TLS variable.
16582
16583         * mini-exceptions.c: Access the LMF structure through accessors.
16584
16585         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16586         variable instead of in jit_tls->lmf.
16587
16588         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16589         
16590         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16591         trampoline lmf frames.
16592
16593         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16594
16595 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16596
16597        * mini.c trace.c mini-x86.c: Revert these too.
16598         
16599        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16600        signature change.
16601
16602 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16603
16604         * genmdesc.c: removed now dead code.
16605
16606 2006-10-09  Robert Jordan <robertj@gmx.net>
16607
16608         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16609
16610 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16611
16612         * mini.h: do not leave gaps in the opcode values.
16613
16614 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16615
16616         * jit-icalls.h: flag functions as internal here, too.
16617
16618 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16619
16620         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16621         functions with the internal attribute.
16622
16623 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16624
16625         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16626
16627 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16628
16629         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16630         for soft-float.
16631
16632 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16633
16634         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16635         tail calls as on other platforms.
16636
16637         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16638
16639         * iltests.il: Add a few tailcall tests.
16640
16641 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * driver.c: fix loop for old compilers (bug #79521).
16644
16645 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16646
16647         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16648
16649         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16650
16651         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16652         metadata without any code.
16653
16654         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16655         more precise debugging information using gdb.
16656
16657 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16658
16659         * inssel-ia64.brg: Make the helper methods static.
16660
16661 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16662
16663         * inssel-x86.brg: make the helper methods static.
16664
16665 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16666
16667         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16668
16669 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16670
16671         * mini.c: updates for monoburg changes.
16672         * inssel.brg: make a few helper functions static as they should.
16673
16674 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16675
16676         * Makefile.am: Move mini-codegen.c to common_sources.
16677
16678 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16679
16680         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16681         instructions.
16682         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16683         mini-ppc.h: port to use the common local register allocator.
16684
16685 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16686
16687         * mini.h: Remove the comment too then.
16688
16689 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16690
16691         * mini.h: put back backend.data which is to be used shortly and
16692         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16693         pointers on 4 byte boundaries it'd have much bigger issues running
16694         and you can ifdef it out anyway.
16695
16696 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16697
16698         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16699         MonoInst size by 4 bytes on 64 bit machines.
16700
16701 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16702
16703         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16704         replacement with more meaningful field names. Arch maintainers, please
16705         check the assigned names are good enough for your arch.
16706
16707 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16708
16709         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16710         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16711
16712 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16713
16714         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16715         relocations and memory requirements, put the optimization flags
16716         definitions in their own file.
16717
16718 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16719
16720         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16721
16722         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16723
16724 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16727
16728 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16729
16730         * inssel.brg: use the correct function to get the size of an item
16731         in an array, given an element class.
16732         * aot-compiler.c: do not access class->class_size directly.
16733
16734 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16735
16736         * mini.h, debug-mini.c: added a debugging function to print
16737         info about local variables and arguments in a jitted method.
16738
16739 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16742
16743         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16744
16745 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16746
16747         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16748         inner and outer loops when passing vtypes.
16749
16750 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16751
16752         * mini-ppc.c: take into account the cpu errata for cache flushing
16753         which caused some random errors (bug #79381).
16754
16755 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16758         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16759
16760 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16761
16762         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16763         loaded.
16764
16765         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16766         freebsd ports tree.
16767
16768         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16769         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16770
16771         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16772         displacement.
16773
16774 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16777
16778 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16779
16780         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16781         macro does not have to be changed during debugging.
16782
16783         * 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>.
16784
16785         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16786
16787         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16788         
16789         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16790         MONO_ARCH_NO_EMULATE_MUL is defined.
16791
16792         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16793
16794         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16795
16796         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16797
16798         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16799         
16800 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16801
16802         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16803         stuff to mini-exceptions.c where it is used.
16804
16805         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16806         setup code, the real one is in mini-exceptions.c.
16807
16808         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16809         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16810         some changes from the freebsd ports tree.
16811
16812         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16813         constants.
16814         
16815         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16816
16817 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16818
16819         * mini.c: on Linux, check for /proc to be mounted
16820         (bug# 79351, novell bug#201204).
16821
16822 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16823
16824         * mini.c: handle cases where pthread_attr_getstack() behaves
16825         incorrectly (bug #78096).
16826
16827 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16828
16829         * mini-arm.c: support larger stack frames (bug #79272).
16830
16831 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16834
16835         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16836         tokens.
16837
16838         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16839         mono_class_from_name () to find a class from its name.
16840
16841         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16842
16843 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16844
16845         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16846
16847 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16848
16849         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16850
16851 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16852
16853         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16854         callinfo->trampoline.
16855
16856         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16857         fixes #79271.
16858         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16859         future.
16860
16861 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16862
16863         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16864
16865 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16866
16867         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16868         stats.method_trampolines, it is already done by the generic trampoline code.
16869
16870         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16871         
16872 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16873
16874         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16875
16876         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16877
16878         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16879
16880         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16881         
16882         * mini.c (print_jit_stats): Print new stats.
16883
16884         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16885
16886 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16887
16888         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16889         Address on two dimensional arrays. Fixes #78729.
16890
16891         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16892
16893         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16894         a method.
16895
16896         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16897
16898         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16899         #79130.
16900         
16901         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16902         a race condition.
16903         (mini_get_ldelema_ins): Ditto.
16904
16905 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16906
16907         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16908         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16909         Fixes #79213.
16910
16911 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16912
16913         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16914         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16915
16916         * exceptions-s390x.c: Cosmetic change.
16917
16918         * tramp-s390.c: Fix warning.
16919
16920         * cpu-s390.md: Correct length of mul_imm.
16921
16922 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16923
16924         * aot-compiler.c: added binary writer with ELF backend
16925         implementation (only on Linux/x86 for now).
16926
16927 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16928
16929         * Makefile.am: Don't run net 2.0 AOT tests.
16930
16931         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16932         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16933
16934         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16935
16936 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16937
16938         * aot-compiler.c: simplified and refactored the asm-writing code
16939         to allow different backends.
16940
16941 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16944
16945         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16946         little. Share patches of type TYPE_FROM_HANDLE as well.
16947
16948         * mini.c (mono_patch_info_equal): New helper function.
16949         (mono_patch_info_hash): Ditto.
16950
16951         * aot-compiler.c (emit_method_code): Fix s390 build.
16952
16953         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16954         is not handled because it is stored as a flag and not as a type ctor. Fixes
16955         #79016.
16956
16957 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16958
16959         * aot-compiler.c: Fix computation of GOT slot statistics.
16960         
16961         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16962         Also remove support for not PIC AOT.
16963
16964         * mini.h: Bump AOT file format version.
16965
16966         * objects.cs: Add a test for #78990.
16967
16968         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16969         (peter.dettman@iinet.net.au). Fixes #79087.
16970
16971         * basic-long.cs: Add a test for the above.
16972
16973 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16974
16975         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16976         
16977         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16978         code somewhat.
16979
16980 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16981
16982         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16983         exceptions.
16984
16985 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16986
16987         * mini.c: Don't verify COM proxy invoke calls
16988         
16989
16990 2006-08-10  Dick Porter  <dick@ximian.com>
16991
16992         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16993         which process is holding semaphores locked.
16994
16995 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16996
16997         * mini-ia64.c mini-amd64.c: Fix #79027.
16998
16999         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
17000
17001         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
17002
17003         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
17004         implicit arguments in a vararg call. Fixes #79027.
17005
17006 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
17007
17008         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
17009         (mono_get_array_new_va_signature): Ditto.
17010
17011 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
17012
17013         * aot-runtime.c: Call init_plt lazily.
17014
17015         * inssel-long.brg: Fix unsigned long->int conversion.
17016
17017         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
17018
17019         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
17020         that most data is now in the .rss/.data section.
17021
17022 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
17023
17024         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
17025
17026         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
17027
17028         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
17029
17030         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
17031
17032         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
17033         virtual call. Fixes #79010.
17034
17035         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
17036         and use the result as the this argument in the real call.
17037
17038         * generics.2.cs: Add a new test for #79010.
17039         
17040 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
17041
17042         * mini-x86.c: Fix a warning.
17043
17044         * aot-compiler.c: Add a bunch of statistics.
17045
17046         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
17047
17048 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
17049
17050         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
17051
17052 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17053
17054         * 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>.
17055
17056 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17057
17058         * mini.c (mono_method_to_ir): Obtain the original method in the
17059         CIL stream and use this to perform validation.
17060
17061         Fixed: #78816
17062
17063 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17064
17065         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17066         (mono_arch_call_opcode): Ditto.
17067
17068         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17069         #78826.
17070
17071         * mini.c (mono_patch_info_dup_mp): New helper function.
17072         
17073         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17074         compilation. Fixes #78827.
17075
17076 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17077
17078         * declsec.c: Use original security informations for
17079           MONO_WRAPPER_MANAGED_TO_MANAGED.
17080
17081 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17082
17083         * mini.c: Allow Com Interop methods/classes and
17084         don't verify COM wrapper calls
17085         
17086
17087 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17088
17089         * inssel-long32.brg: Fix long->i4 checked conversion.
17090
17091         * exceptions.cs: Add a test for the above.
17092
17093 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17096
17097         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17098         leaks.
17099
17100         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17101         #78775.
17102
17103 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17104
17105         * mini.c: Fix solaris/x86 exception handling.
17106
17107         * Makefile.am: Get rid of $(ICU_LIBS).
17108
17109 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17112         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17113         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17114
17115         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17116
17117         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17118         this function causes a SIGSEGV.
17119
17120 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17121
17122         * mini.c: Remove unused solaris/x86 includes.
17123
17124 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17125
17126         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17127
17128 2006-06-20  Jb Evain  <jbevain@gmail.com>
17129
17130         * cpu-g4.md: fix max length of start_handler instruction.
17131
17132 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17133         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17134
17135 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17136         * ssa.c: Fixed bug 78653 for SSA based deadce.
17137         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17138         MonoInst.flags, used in SSA based deadce.
17139         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17140         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17141
17142 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17143
17144         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17145         it can end up using non executable memory on ppc64 systems
17146         running ppc32 userspace (fix from Johannes Berg).
17147
17148 2006-06-14  Dick Porter  <dick@ximian.com>
17149
17150         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17151         4.1.1
17152
17153 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17154         * mini.c: Made so that inline is locally disabled if it would
17155         trigger a .cctor, because too many apps depend on this behavior
17156         (which seems to be also the one of the MS CLR).
17157
17158 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17159
17160         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17161         No idea why this worked before.
17162
17163         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17164         which branch to outer exception clauses since they could skip the
17165         inner finally clauses. Fixes #78633.
17166
17167         * exceptions.cs: Add a test for the above.
17168
17169         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17170         Fixes #78629.
17171
17172         * iltests.il: Add a test for the above.
17173
17174 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17175
17176         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17177         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17178
17179         * iltests.il: Add a test for the above.
17180
17181 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17182
17183         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17184         
17185         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17186         methods as instrinsics.
17187
17188 2006-06-09  Wade Berrier <wberrier@novell.com>
17189
17190         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17191         (simple-cee-ops.h ssapre-mini-ops.h)
17192
17193 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17194
17195         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17196         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17197         instruction).
17198         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17199         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17200
17201 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17202
17203         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17204
17205 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17206
17207         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17208         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17209         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17210         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17211         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17212         of opcodes, so that bug 78549 should not happen again.
17213         * ssapre.c: Updated to use the renamed files.
17214
17215 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17216
17217         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17218         in OP_ATOMIC_EXCHANGE_I4.
17219
17220 2006-06-07  Wade Berrier <wberrier@novell.com>
17221
17222         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17223         in mono_debugger_create_notification_function)
17224
17225 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17228         
17229         * mini.c (type_from_stack_type): Disable some changes which do not
17230         seem to work.
17231
17232         * driver.c: Reenable opts.
17233
17234         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17235         of the evaluation stack.
17236         
17237         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17238         evaluation stack trace at entry to the bblock.
17239
17240         * mini.c (merge_stacks): New function to perform verification of stack merges.
17241         Turned off by default.
17242
17243         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17244         STACK_MP.
17245         
17246 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17247
17248         * local-propagation.c: Fixed bug 78549.
17249
17250 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17251
17252         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17253
17254 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17255
17256         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17257         tramp-arm.c, tramp-ia64.c
17258         (mono_debugger_create_notification_function): Update signature to
17259         new signature and use new protocol for creating the notification
17260         function.  
17261
17262         Should fix the build.
17263
17264 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17265
17266         * exceptions-ppc.c (mono_jit_walk_stack)
17267         (ves_icall_get_frame_info): Fix the build
17268
17269 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17270
17271         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17272
17273 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17274
17275         * il2tests.2.il: New file for generics CIL tests.  Add test for
17276         #78019.
17277         * Makefile.am: Update.
17278
17279         Fix #78019
17280         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17281         to nullable types.
17282
17283 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17284
17285         * aliasing.c: Fixed bug 78311.
17286
17287 2006-05-29  Martin Baulig  <martin@ximian.com>
17288
17289         * mini-exceptions.c (mono_find_jit_info): When computing the
17290         native offset, check whether we're actually inside the method's
17291         code; call mono_debug_print_stack_frame() to format the frame.
17292         (ves_icall_System_Exception_get_trace): Call
17293         mono_debug_print_stack_frame() to format the stack frame.
17294         (ves_icall_get_trace): Update to the new debugging API.
17295         (mono_jit_walk_stack_from_ctx): Likewise.
17296         (ves_icall_get_frame_info): Likewise.
17297
17298         * mini.c (get_method_from_ip): Use the new debugging API.
17299         (mono_print_method_from_ip): Likewise.
17300
17301         * exceptions-ppc.c
17302         (mono_jit_walk_stack): Use the new debugging API.
17303         (ves_icall_get_frame_info): Likewise.   
17304
17305 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17306
17307         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17308
17309 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17310
17311         * mini.c: Added "limitator" to inline for debugging.
17312
17313 2006-05-24  Martin Baulig  <martin@ximian.com>
17314
17315         * debug-debugger.c (mono_debugger_init): Create a private,
17316         malloc()-based code manager for the notification function and
17317         intentionally leak it on exit.  This fixes the crash-on-exit race
17318         condition.
17319
17320         * tramp-amd64.c
17321         (mono_debugger_create_notification_function): Added
17322         `MonoCodeManager *' argument.
17323
17324         * tramp-x86.c
17325         (mono_debugger_create_notification_function): Added
17326         `MonoCodeManager *' argument.
17327
17328 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17329
17330         * aliasing.c: Fixed 64 bit issue.
17331         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17332         default since all known bugs are fixed (one more time!).
17333
17334 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17335
17336         * mini.c: write barrier support.
17337
17338 2006-05-23  Martin Baulig  <martin@ximian.com>
17339
17340         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17341         check at the top of the file.
17342
17343 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17344
17345         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17346         reverting changes without reason and without changelog entries.
17347
17348 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17349
17350         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17351         to a few opcodes. Fixes #78439.
17352
17353         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17354         consistency with other archs.
17355
17356         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17357
17358 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17359
17360         * debug-debugger.c: fix the build.
17361
17362 2006-05-17  Martin Baulig  <martin@ximian.com>
17363
17364         * debug-debugger.c
17365         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17366         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17367         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17368         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17369
17370 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17371
17372         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17373
17374 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17375
17376         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17377         MONO_TYPE_GENERICINST.
17378         
17379         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17380         MONO_TYPE_GENERICINST.
17381
17382 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17383
17384         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17385         #78325.
17386
17387 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17388
17389         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17390         mempool.
17391         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17392
17393 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17394
17395         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17396         mono_trace_cleanup ().
17397
17398         * iltests.il: Fix problem with the newly added test.
17399
17400         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17401         due to register constraints, free up the previous hreg. Fixes #78314.
17402
17403         * iltests.il: Add new test for #78314.  
17404
17405         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17406         Interlocked.Add. Fixes #78312.
17407
17408         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17409         
17410 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17411
17412         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17413
17414 2006-05-05  Martin Baulig  <martin@ximian.com>
17415
17416         * debug-mini.c (mono_debug_open_block): New method.
17417
17418         * mini-amd64.c
17419         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17420         the beginning of each basic block.
17421
17422         * mini-x86.c
17423         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17424         the beginning of each basic block.
17425
17426 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17427
17428         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17429         default until I understand why they break the build on amd64.
17430
17431 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17432
17433         * mini.c (mini_cleanup): Call mono_cleanup ().
17434
17435         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17436         errors.
17437
17438 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17439
17440         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17441         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17442         default since all known bugs are fixed, and I cannot reproduce bug
17443         77944... I'm asking Matt Hargett to test again after this commit.
17444
17445 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17446
17447         * mini-codegen.c: Fixed typo that thrashed inline.
17448
17449 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17450
17451         * dominators.c (compute_dominators): Avoid using a worklist since
17452         it is not correct in some cases. Instead, iterate over all bblocks as
17453         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17454
17455 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17456
17457         * mini.c (mono_jit_compile_method_inner): Use
17458         mono_prepare_exception_from_error that resets the value
17459         internally.
17460
17461 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17462
17463         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17464         
17465 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17466
17467         * aliasing.c: Fixed bug 78210.
17468
17469 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17470
17471         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17472         default until all their problems (or the ones they trigger) are fixed.
17473
17474 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17475
17476         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17477         
17478         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17479         as loaded only after resolving patches since that could invoke the same method.
17480
17481         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17482
17483         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17484         functions.
17485
17486         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17487         AOT loader.
17488
17489         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17490         stack.
17491
17492         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17493         made from AOT code through the PLT table.
17494
17495         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17496         holding the plt offset when a call is made to the aot plt trampoline.
17497         
17498 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17499
17500         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17501         amd64 AOT support.
17502
17503         * Makefile.am (common_sources): Fix build breakage.
17504
17505         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17506         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17507         intra-assembly calls if possible.
17508         
17509         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17510
17511         * mini-trampolines.c: Handle PLT entries.
17512
17513         * mini.c: Avoid creating a GOT var for calls.
17514
17515         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17516         from mscorlib code.
17517
17518         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17519         from mscorlib code.
17520
17521         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17522         AOT code.       
17523
17524         * mini.h: Bump AOT file format version.
17525         
17526         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17527         covers more cases.
17528
17529 2006-04-25  Martin Baulig  <martin@ximian.com>
17530
17531         * driver.c: Disable copyprop, consprop and inline when running
17532         inside the debugger.
17533
17534 2006-04-25  Martin Baulig  <martin@ximian.com>
17535
17536         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17537         with `get_current_thread' and added `detach'.
17538         (MonoDebuggerMetadataInfo): Added `thread_size',
17539         `thread_tid_offset', `thread_stack_ptr_offset' and
17540         `thread_end_stack_offset'.
17541
17542 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17545         aot-runtime.c.
17546
17547         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17548         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17549
17550         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17551
17552         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17553
17554         * aot.c: Add support for ADJUSTED_IID.  
17555
17556 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17557
17558         * aot.c (emit_method_order): Don't align method_order_end.
17559
17560         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17561         the interface ID changes.
17562
17563 2006-04-21  Dick Porter  <dick@ximian.com>
17564
17565         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17566         cleaning up a thread.  Fixes the new part of bug 77470.
17567
17568 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17569
17570         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17571         to managed wrapper.
17572                      
17573 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17574
17575         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17576         
17577         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17578         SIGSEGV. Fixes #78072.
17579
17580         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17581         unregister our SIGABRT handler.
17582
17583 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17584
17585         * mini.c: Disabled inline where it can alter the call stack in a
17586         way visible from managed code.
17587         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17588         default.
17589
17590 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17591
17592         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17593         on other platforms. Fixes #78089.
17594
17595 2006-04-13  Martin Baulig  <martin@ximian.com>
17596
17597         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17598         determine whether we're inside the debugger.
17599
17600         * debug-debugger.h
17601         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17602
17603 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17604
17605         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17606         handler clauses. Fixes #78024.
17607
17608         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17609         in the CALL_MEMBASE opcodes. Fixes #78088.
17610         (mono_arch_get_vcall_slot_addr): Ditto.
17611
17612 2006-04-10  Martin Baulig  <martin@ximian.com>
17613
17614         * debug-debugger.c: The thread handling code has now been moved
17615         into ../metadata/threads.c.
17616
17617 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17618
17619         * driver.c (mono_main): Fix --with-gc=none build.
17620
17621         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17622         (mono_spillvar_offset_float): Ditto.
17623         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17624         hreg, not when its !global, since on ia64, there is a third category: stacked
17625         registers.      
17626
17627 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17628
17629         * mini.c: set MonoInst->klass for load field address and a few other
17630         places.
17631
17632 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17633
17634         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17635
17636 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17637
17638         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17639         the branch opt changes.
17640
17641 2006-04-06  Dick Porter  <dick@ximian.com>
17642
17643         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17644         
17645         * wapihandles.c (mini_wapi_seminfo): 
17646         * driver.c (mono_main): Add semaphore info option
17647
17648 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17649
17650         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17651         branch optimization changes. Fixes #78009.
17652
17653 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17654
17655         * mini.c: ignore accessibility of methods in managed->native wrappers.
17656
17657 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17658
17659         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17660         
17661         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17662
17663 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17664
17665         * mini.c: Modify the branch optimizations to preserve the invariant that
17666         the entries inside the in_bb and out_bb arrays are unique.
17667         (mono_unlink_bblock): Avoid creation of new arrays.
17668
17669 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17670
17671         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17672         change (#77992).
17673
17674 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17675
17676         * mini.c (optimize_branches): Remove the "optimizations" in
17677         the cbranch1/cbranch2 -> branch cases which were causing several
17678         problems in the past. Fixes #77986.
17679
17680 2006-03-31  Chris Toshok  <toshok@ximian.com>
17681
17682         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17683         default optimizations :(
17684
17685 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17686
17687         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17688         branch.
17689
17690 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17691
17692         * local-propagation.c: Added comments to structs and removed
17693         "Mono" prefixes from local tree mover types.
17694
17695 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17696
17697         * Makefile.am (arch_sources): Define this for each architecture so 
17698         libmono_la_SOURCES is defined in one place.
17699
17700 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17701
17702         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17703         from handles/.
17704
17705 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17706
17707         * driver.c: print the GC name supplied by configure.
17708
17709 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17710
17711         * local-propagation.c: Added tree mover, and moved here all the
17712         local propagation code from mini.c
17713         * mini.c: Added support for treeprop, and moved all the local
17714         propagation code to local-propagation.c
17715         * mini.h: Added support for treeprop
17716         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17717         treeprop, inline and deadce by default
17718         * Makefile.am: Added local-propagation.c
17719
17720 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17721
17722         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17723
17724 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17725
17726         * debug-debugger.c: make it compile without the Boehm GC.
17727
17728 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17729
17730         * mini.c: fixed issue with mismatch when an icall is registered
17731         with multiple names but same address.
17732
17733 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17734
17735         * declsec.c, mini-exceptions.c: use write barrier to set reference
17736         fields of managed objects.
17737
17738 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17739
17740         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17741         (can_access_internals): Fix a warning.
17742
17743         * mini.c (print_method_from_ip): Rename this to 
17744         mono_print_method_from_ip so it gets exported.
17745
17746         * trace.c: Deal with strings inside StringBuilder's containing garbage
17747         and fix memory leaks. Fixes #77848.
17748
17749 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17750
17751         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17752         fixes #77787.
17753
17754 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17755         
17756         * mini-s390.c: Remove OP_X86_TEST_NULL.
17757
17758 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17759
17760         * mini.c: use the correct GetHashCode() for the moving collector.
17761
17762 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17763
17764         * liveness.c: Regalloc spill cost tuning.
17765
17766 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17767         
17768         * mini-s390x.h: Correct S390_LONG macro.
17769
17770         * mini-s390x.c: Cleanup unused code.
17771
17772 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17773
17774         * jit-icalls.h: New file.
17775
17776         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17777         icalls and include that instead of including jit-icalls.c.
17778
17779         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17780         OP_X86 opcodes.
17781
17782 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17783
17784         * mini.c: when checking for member accessibility, also check for
17785         friend assemblies and for explicit interface implementations.
17786
17787 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17788
17789         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17790
17791         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17792
17793         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17794         common cases are done first.    
17795
17796         * mini-ops.h: Only define platform specific opcodes on the given platform.
17797
17798         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17799         branch.
17800         
17801 2006-03-14  Martin Baulig  <martin@ximian.com>
17802
17803         Revert Paolo's change from r57348:
17804
17805         * mini.h: don't use gboolean for bitfields.
17806         * mini.c: verifier changes for fields and methods accessibility.
17807
17808 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17809
17810         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17811
17812         * mini-s390x.c: Fix conv_r_un.
17813
17814         * cpu-s390, cpu-s390x.md: Fix lengths.
17815
17816 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17817
17818         * mini.c: nested types have access to all the nesting
17819         levels, not just the enclosing types.
17820
17821 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17822
17823         * mini.c: added a few more verification checks.
17824
17825 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17826
17827         * liveness.c: Merge optimizations from the linear-il branch.
17828
17829 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17830
17831         * mini-ia64.c (emit_call): Add a comment.
17832
17833         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17834
17835         * tramp-ia64.c: Fix some warnings.
17836
17837 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17838
17839         * mini.h: don't use gboolean for bitfields.
17840         * mini.c: verifier changes for fields and methods accessibility.
17841
17842 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17843
17844         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17845         lazy icall wrapper changes.
17846
17847         * dominators.c: Replace all the dominator algorithms with faster
17848         ones from the linear-il branch.
17849
17850         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17851         the mempool.
17852
17853         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17854         common cases are done first.
17855
17856         * mini-amd64.c: Fix some warnings.
17857
17858         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17859         from the mempool.
17860
17861         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17862         added code.
17863
17864         * mini.h: Add a missing prototype.
17865
17866 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17867
17868         * mini.c: Compile icall wrappers lazily.
17869
17870         * mini-codegen.c: Use printf instead of g_print since its much faster.
17871
17872         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17873         function.
17874
17875         * mini.c (optimize_branches): Cache the negative result from 
17876         remove_block_if_useless ().
17877
17878         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17879         Also fix some bblock linking issues.
17880
17881         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17882         assembly files.
17883
17884         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17885
17886         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17887         accessed fields first, for better cache behavior.
17888         
17889 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17890
17891         * mini.c: speedup IList<T> array accesses.
17892
17893 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17894
17895         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17896         inline_costs counter. Fixes #77190.
17897
17898 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17899
17900         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17901         trace messages. Fixes #77706.
17902
17903 2006-03-04  Martin Baulig  <martin@ximian.com>
17904
17905         * tramp-amd64.c, tramp-x86.c
17906         (mono_debugger_create_notification_function): Use
17907         mono_global_codeman_reserve() to allocate a buffer at runtime and
17908         return it.
17909
17910         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17911
17912         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17913         notification function at runtime and then call `initialize' in the
17914         `MONO_DEBUGGER__debugger_info' vtable.
17915
17916 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17917
17918         * iltests.il: Fix a visibility problem.
17919
17920 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17921
17922         * driver.c, mini.c: add hooks for the counters API.
17923
17924 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17925
17926         * driver.c: show disabled options.
17927
17928 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17929
17930         * linear-scan.c: always use cost-driven selection.
17931
17932 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17933
17934         * jit-icalls.c (helper_compile_generic_method): Revert change from
17935         2006-02-24.
17936
17937 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17938
17939         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17940
17941 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17942
17943         * inssel.brg: style fixes, mostly to force the updated monoburg
17944         to run for people using svn.
17945
17946 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17947
17948         * mini.c: match monoburg changes.
17949
17950 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17951
17952         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17953         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17954         declaration in the header file.
17955
17956 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17957
17958         * helpers.c: reduce relocations and mem usage.
17959
17960 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17961
17962         * mini.h, mini-codegen.c: disable logging features if
17963         requested by configure.
17964
17965 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17966
17967         * mini.c: tiny verifier changes.
17968
17969 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17970
17971         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17972         cpu-pentium.md: stack alignment changes for osx/x86,
17973         partially from Geoff Norton <gnorton@customerdna.com>.
17974
17975 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17976
17977         * jit-icalls.c (helper_compile_generic_method): Update to changes
17978         in metadata/class.c.
17979
17980 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17981         
17982         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17983         
17984         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17985         interface calls with large offsets.
17986
17987 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17988
17989         * jit-icalls.c (helper_compile_generic_method): Document the
17990         special-case we depend on so that we can inflate the method twice
17991         with the same context with no bad side-effects.
17992
17993 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17994
17995         * mini-x86.c, mini-amd64.c: fix for case when xen support
17996         is disabled.
17997
17998 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17999
18000         * mini-x86.c, mini-amd64.c: generate code to access tls items
18001         in a faster way for Xen systems.
18002
18003 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
18006         updates and compilation fixes for the OSX/x86 port, mostly from
18007         Geoff Norton <gnorton@customerdna.com>.
18008
18009 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
18010
18011         * inssel.brg: faster interface call implementation
18012         to sync with the interface_offsets MonoVTable changes.
18013
18014 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18015
18016         * mini.c: more verification checks.
18017
18018 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
18019
18020         * mini.c: added a few more verification checks.
18021
18022 2006-02-17      Neale Ferguson <neale@sinenomine.net>
18023
18024         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
18025         facility on the processor and use it if available.
18026
18027 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18028
18029         * driver.c, aot.c, mini.c: throw exception if the IL code is
18030         invalid or unverifiable.
18031
18032 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18033
18034         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
18035         m.StructField.
18036
18037 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
18038
18039         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
18040
18041 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18042
18043         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
18044         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
18045         handling of instantiated generic valuetypes.
18046
18047 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18048
18049         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
18050         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
18051         instead.
18052
18053         * generics.2.cs: Revert the nullable reftypes tests.
18054
18055 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18056
18057         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18058         using __builtin_frame_address (1) as it doesn't work in the presence
18059         of optimizations. Hopefully fixes #77273.
18060
18061         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18062         -> generics.cs change as it doesn't work with some automake versions.
18063
18064 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18065
18066         * mini.c: handle systems that sue a different way to
18067         retrieve the stack address of the current thread.
18068
18069 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18070
18071         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18072         it specially in the makefile.
18073
18074         * generics.2.cs: Add tests for nullable reference types.
18075
18076 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18077
18078         * mini.c: always handle the case when mono_jit_init()
18079         is called in a thread different from the main thread,
18080         confusing libgc (bug #77309).
18081
18082 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18083
18084         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18085
18086 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18087
18088         * mini.c: change optimize_branches () to use a single loop
18089         and introduce a new optimization to simplify some range checks.
18090
18091 2006-02-03  Martin Baulig  <martin@ximian.com>
18092
18093         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18094         and merged with debugger_thread_manager_add_thread().
18095         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18096         inform the debugger about the main thread.
18097
18098 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18099
18100         * basic.cs: Add test for div.un/rem.un constant folding.
18101
18102 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18103
18104         * cpu-s390x.md: correct int_xor_imm length
18105
18106 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * generics.2.cs: New test for #77442.
18109
18110         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18111         #77442.
18112
18113 2006-02-02  Martin Baulig  <martin@ximian.com>
18114
18115         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18116         <mono/metadata/mono-debug-debugger.h>   
18117
18118         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18119
18120 2006-02-02  Martin Baulig  <martin@ximian.com>
18121
18122         * debug-debugger.h: New header file for debug-debugger.c.
18123
18124         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18125         function is a separate thread anymore; add support for attaching.
18126
18127 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18128
18129         * tramp-x86.c: Fix a warning.
18130
18131 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18132
18133         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18134         on very large methods.
18135
18136         * aot.c (load_patch_info): Fix a warning.
18137
18138 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18139
18140         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18141         mini-ops.h: alu membase optimizations.
18142
18143 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18144
18145         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18146         to speedup StringBuilder.
18147
18148 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18149
18150         * dominators.c (mono_compute_natural_loops): Fix detection of
18151         loop body start blocks.
18152
18153         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18154
18155 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18156
18157         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18158         #75145.
18159
18160 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18161
18162         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18163
18164 2006-01-25  Martin Baulig  <martin@ximian.com>
18165
18166         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18167         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18168         started to cleanup this file a little bit.
18169
18170 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18171
18172         * mini.c: optimize a codepath frequently happening in generics code.
18173
18174 2006-01-23  Martin Baulig  <martin@ximian.com>
18175
18176         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18177
18178         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18179         functions directly.
18180
18181         * driver.c: debug-debugger.c is only available if
18182         `MONO_DEBUGGER_SUPPORTED' is defined.   
18183
18184 2006-01-23  Martin Baulig  <martin@ximian.com>
18185
18186         * debug-debugger.c: Only enable this on platforms where the Mono
18187         Debugger is working (x86 and x86_64).
18188
18189 2006-01-21  Martin Baulig  <martin@ximian.com>
18190
18191         The Mono Debugger is now using the normal `mono' instead of the
18192         `mono-debugger-mini-wrapper' when executing managed code.
18193
18194         * debug-debugger.c: New file; previously known as
18195         debugger/wrapper/wrapper.c.
18196
18197         * debug-mini.c (mono_init_debugger): Removed.
18198
18199         * driver.c (mono_main): Added new `--inside-mdb' command line
18200         argument which is used when running inside the debugger.
18201
18202 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18203
18204         * liveness.c (mono_analyze_liveness): Remove some unused data
18205         structures.
18206
18207 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18208
18209         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18210
18211 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18212
18213         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18214         depends on implementation details of monobitset.
18215
18216         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18217         Fixes #77271.
18218
18219 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18220
18221         * liveness.c: Update after monobitset changes.
18222
18223 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18224
18225         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18226
18227 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18228
18229         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18230
18231         * mini-s390x.c: Remove warning messages.
18232
18233 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18234
18235         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18236
18237 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18238
18239         * generics.2.cs: Add ldelem/stelem_any test.
18240
18241 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18242
18243         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18244
18245 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18246
18247         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18248         
18249 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18250
18251         * generics.2.cs: Reenable vtype tests.
18252
18253         * inssel-x86.brg: Remove an icorrect valuetype rule.
18254
18255 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18256
18257         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18258         initial support for OP_ABS.
18259
18260 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18261
18262         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18263
18264 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18265
18266         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18267         conversion and implement LADD/LSUB.
18268
18269         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18270         architectures.
18271
18272 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18273
18274         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18275
18276         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18277         architectures.
18278
18279 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18280
18281         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18282         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18283         (stack walk problem).
18284
18285 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18286
18287         * aot.c (mono_aot_load_method): Fix a warning.
18288
18289 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18290
18291         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18292
18293 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18294
18295         * iltests.il: Add test for #77148.
18296
18297         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18298         #77148.
18299
18300 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18301
18302         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18303
18304 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18305
18306         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18307         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18308
18309         * basic-long.cs: Add lconv-to-r4/r8 tests.
18310
18311 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18312
18313         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18314
18315         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18316         here as on other archs.
18317
18318 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18319
18320         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18321
18322 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18323
18324         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18325         
18326         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18327
18328         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18329         instrument_prolog; Add memory_barrier instruction.
18330
18331 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18332
18333         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18334
18335 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18336
18337         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18338
18339         * aliasing.c inssel.brg: Fix warnings.
18340
18341         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18342         could skip initialization of some parts of memory.
18343
18344         * mini.c mini-ia64.c: Fix warnings.
18345
18346         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18347
18348 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18349
18350         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18351         a crash seen on sparc.
18352
18353         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18354         
18355         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18356
18357 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18358
18359         * mini-ops.h: Add s390_backchain instruction
18360
18361         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18362
18363         * cpu-s390.md: Add s390_backchain instruction
18364
18365         * mini-s390.c: Significant ABI changes
18366
18367         * mini-s390.h: Cater for zero length structures
18368
18369 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18370
18371         * mini-s390.c: ABI fixes
18372
18373         * inssel-s390.brg: Remove debug statements
18374
18375         * cpu-s390.md: Fix length of ATOMIC_xx operations
18376
18377 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18378
18379         * basic-float.cs: Add float<->long conversion tests.
18380
18381 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18382
18383         * mini-s390.c: Fix LOCALLOC processing.
18384
18385         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18386
18387 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18388
18389         * iltests.il: Add tests for some opcodes not covered by the other
18390         tests.
18391
18392 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18393
18394         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18395         register loading for Tail processing; Correct trace output.
18396
18397         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18398
18399         * cpu-s390.md: Correct size of jmp instruction. 
18400
18401 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18402
18403         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18404
18405 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18406
18407         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18408           Bring s390 up to current level.
18409
18410 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18411
18412         * generics.2.cs: Disable the newly added tests as they do not work yet.
18413         
18414         * generics.2.cs: Add valuetype tests.
18415
18416 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18417
18418         * basic-long.cs: Add i4->u8 test.
18419
18420         * objects.cs: Add tests for JIT intrinsic.
18421
18422         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18423         optimizations lost by a mistake.
18424
18425 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * basic-long.cs: Remove a test moved to objects.cs.
18428
18429         * arrays.cs: Add more array tests.
18430
18431 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18432
18433         * arrays.cs: Add new tests for multi-dimensional arrays.
18434
18435 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18436
18437         * Makefile.am (test_sources2): Add generics.2.cs.
18438         (EXTRA_DIST): Add test_sources2.
18439
18440 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18441
18442         Support for boxing and unboxing nullable types as well as the
18443         isinst operation on nullables, per the CLI ammendment.
18444
18445         * inssel.brg (CEE_ISINST): Special case for nullable
18446
18447         * mini.c (handle_unbox_nullable): new method
18448         (handle_box): Special case for nullable types
18449         (mono_method_to_ir): Call handle_unbox_nullable in correct
18450         places.
18451
18452         * generics.2.cs: New test suite
18453
18454         * Makefile.am: Support for regression tests with generics.
18455
18456 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18457
18458         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18459         allocated to registers. Fixes #76800.
18460
18461 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18462
18463         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18464
18465 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18466
18467         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18468         of platforms.
18469
18470 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18471
18472         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18473         objects.cs.
18474
18475         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18476         
18477         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18478 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18479
18480         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18481         single precision before storing to a single precision location.
18482
18483 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18484
18485         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18486
18487 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18488
18489         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18490         correct files.
18491
18492         * basic.cs: Remove test_0_byte_compares test which was moved to
18493         objects.cs a long time ago.
18494
18495 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18496
18497         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18498
18499 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18500
18501         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18502         handlers are called.
18503
18504         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18505         throwing code.
18506
18507          * mini-ia64.c: Add support for the throw->branch exception 
18508         optimization.   
18509
18510         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18511
18512 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18513
18514         * mini.c: Enabled "fastpath" deadce :-)
18515         
18516 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18517
18518         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18519         alias analysis pass to support it.
18520         * mini.h: Likewise.
18521         * ssa.c: Likewise.
18522         * liveness.c: Likewise (liveness computation can use aliasing
18523         information to be more accurate).
18524         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18525         moreover made so that "--compile-all" uses the given optimization
18526         flags and not the default ones.
18527         * aliasing.c: Alias analysis (new file).
18528         * aliasing.h: Likewise.
18529         * Makefile.am: added "aliasing.c" and "aliasing.h".
18530         
18531 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18532
18533         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18534         OP_L opcodes.
18535
18536 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18537
18538         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18539         fp >= end_of_stack exit condition, as it is not needed, and it might
18540         become true for fp eliminated frames.
18541
18542 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18543
18544         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18545         coded offsets.
18546
18547 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18548
18549         * mini-arm.c: fixed alignment of doubles/longs to match
18550         the C ABI (bug #76635).
18551
18552 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18553
18554         * aot.c: fix compilation with --enable-minimal=aot.
18555
18556 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18557
18558         * mini-arm.c: fixed compatibility with the new
18559         floating point emulator package for compares.
18560
18561 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18562
18563         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18564
18565 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * mini-exceptions.c (print_stack_frame): Output to stderr.
18568         (mono_handle_native_sigsegv): Ditto.
18569
18570 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18573         OP_LCONV_TO_OVF_I implementation.
18574
18575         * mini-amd64.c: Add support for the throw->branch exception 
18576         optimization.
18577
18578         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18579         when the catch clause catches a more general exception, i.e. Object.
18580
18581 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * cpu-ia64.md: Remove unused opcodes.
18584
18585         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18586         specific defines for architectures defining USE_SIGACTION.
18587
18588         * mini-ia64.c: Fix some warnings.
18589
18590         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18591         version seemed to skip a frame.
18592
18593 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18596         only calls which are made to native code use this flag.
18597
18598 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18601         varargs methods as well.
18602         
18603         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18604         which have save_lmf set. Reorganize methods prologs a bit.
18605
18606         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18607         debugger to the proper place.
18608
18609 2005-10-29  Martin Baulig  <martin@ximian.com>
18610
18611         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18612         when running inside the debugger until the debugger has support
18613         for it.
18614
18615 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18616
18617         * mini.h: Fix a warning.
18618
18619 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18620
18621         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18622         we expose publicly, this returns the string.
18623
18624 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18627         with fp elimination.
18628
18629 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18630
18631         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18632         native stacktrace using the glibc 'backtrace' function if available.
18633
18634 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18635
18636         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18637
18638         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18639         handle SIGSEGVs received while in native code.
18640
18641         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18642         code, call mono_handle_native_sigsegv which will abort the runtime
18643         after printing some diagnostics, instead of converting it into a
18644         confusing NullReferenceException.
18645
18646 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18647
18648         * cpu-pentium.md: Remove unused opcodes.
18649
18650 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * mini-amd64.h (MonoLMF): Add rsp field.
18653
18654         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18655         the lmf too.
18656
18657 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18658
18659         * mini-codegen.c (get_register_spilling): Fix some warnings.
18660
18661 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18662
18663         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18664         elimination during exception handling. Enable fp elimination by
18665         default.
18666
18667         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18668         elimination.
18669
18670 2005-10-16  Martin Baulig  <martin@ximian.com>
18671
18672         * mini-exceptions.c
18673         (mono_debugger_run_finally): New public method for the debugger.
18674
18675 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18676
18677         * debug-mini.c (mono_debug_init_method): Fix warning.
18678
18679         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18680         the 'exname' parameter const to fix some warnings.
18681
18682 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18683
18684         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18685         introduced by the previous patch.
18686
18687 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18688
18689         * basic-float.cs: Add test for precision of float arithmetic.
18690
18691         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18692         when loading/storing single values from/to memory.
18693
18694         * mini.c (mono_jit_compile_method_with_opt): Create the function
18695         pointers in the correct domain.
18696
18697 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18698
18699         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18700         introduced by previous patch.
18701         
18702         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18703         when out_filter_idx is NULL.
18704
18705         * mini-exceptions.c: Don't run filter clauses twice during exception
18706         handling. Fixes #75755.
18707
18708 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18709
18710         * aot.c: Add support for ldflda wrappers.
18711
18712         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18713         #75902.
18714
18715 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18716
18717         * mini.c, mini.h: do not consider exception handlers blocks when
18718         setting up interface variables.
18719
18720 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18723
18724 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18725
18726         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18727         causes a regression.
18728
18729         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18730
18731 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18732
18733         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18734         of the OP_P definitions.
18735
18736         * TODO: Add a proposal for dealing with the CEE/OP mess.
18737
18738         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18739         optimizations from the x86 port.
18740
18741         * cpu-amd64.md: Ditto.
18742
18743         * basic.cs basic-long.cs: Add tests.
18744
18745 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18746
18747         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18748         Patrik Torstensson's implementation of my exception-handling
18749         optimization idea, when the exception object is not used
18750         (bug #62150).
18751
18752 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18753
18754         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18755         of the mul_imm optimizations from the old jit.
18756
18757 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18758
18759         * mini.c, liveness.c: patch by Patrik Torstensson and
18760         Zoltan Varga to improve performance in methods with
18761         exception clauses.
18762
18763 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18764
18765         * driver.c: Remove 'Globalization' entry from --version.
18766
18767 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18768
18769         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18770         there is a profiler interested in JIT events.
18771
18772         * aot.c: Load profile files produced by the AOT profiling module, and
18773         reorder methods based on the profiling info. Add a 'method_order' table
18774         to the AOT file to make mono_aot_find_jit_info work with the reordered
18775         methods.
18776
18777         * mini.h: Bump AOT file version info.
18778
18779 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18780
18781         * mini-arm.h: work around what looks like a gcc bug when optimizations
18782         are enabled.
18783
18784 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18785
18786         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18787         conditionals.  Use ...
18788         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18789
18790 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18791
18792         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18793         to determine the amount of memory to copy when passing valuetypes.
18794
18795         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18796         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18797
18798 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18801         information about aot.
18802
18803 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18804
18805         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18806         macros. This will allow a deadlock debugger to easily be plugged
18807         in.
18808
18809 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18810
18811         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18812
18813 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18814
18815         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18816         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18817         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18818         ($(arch_built)) [CROSS_COMPILING]: Error out.
18819
18820 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18821
18822         * aot.c: Add support for the no_special_static flag for classes.
18823
18824 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18825
18826         * Reapply reverted patches.
18827
18828         * *: Revert r50174 as well.
18829
18830         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18831
18832 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18835
18836 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18837
18838         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18839         part of the SIG_HANDLER_SIGNATURE.  
18840
18841 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18842
18843         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18844         statistics.
18845
18846         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18847         introduced by previous patch.
18848
18849 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18850
18851         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18852         saved registers too.
18853
18854         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18855         upon the information returned by get_call_info ().
18856         
18857         * mini-x86.c (add_float): Fix stack size calculation.
18858         (mono_arch_call_opcode): Rewrite this so it works based up the
18859         information returned by get_call_info ().
18860         (mono_arch_get_this_vret_args): Ditto.
18861
18862 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18863
18864         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18865         in cinfo to determine the registers which need to be used.
18866
18867 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18868
18869         * driver.c (mono_main): Add --server and --desktop flags. 
18870
18871 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18872
18873         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18874         registers as global registers.
18875
18876         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18877         longer needed with the new register allocator.
18878
18879         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18880
18881         * cpu-ia64.md: Remove unused opcodes.
18882         
18883         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18884         
18885 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * cpu-amd64.md: Remove unused opcodes.
18888
18889         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18890         needed with the new register allocator.
18891
18892         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18893         reg-reg moves.
18894
18895 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18896
18897         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18898
18899 2005-09-16  Martin Baulig  <martin@ximian.com>
18900
18901         * exceptions-amd64.c
18902         (throw_exception): Don't call mono_debugger_throw_exception() if
18903         we're a rethrow - see the FIXME in the code.
18904
18905 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18906
18907         * mini.c (mono_init_exceptions): This only works on some architectures.
18908         
18909 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18910
18911         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18912         on ia64.
18913
18914         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18915
18916         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18917         now in mini-exceptions.c.
18918
18919 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18922         now in mini-exceptions.c.
18923
18924 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18925
18926         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18927         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18928
18929         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18930         code into mini-exceptions.c. Add some assertions to it.
18931
18932 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18933
18934         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18935         (<software@solmersa.com>). Fix as errors on windows.
18936
18937 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18938
18939         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18940         method info into the LMF.
18941
18942 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18943         
18944         * mini-ia64.c: Add proper unwind info for method epilogs.
18945
18946         * exceptions-ia64.c: Add some code to help debugging.
18947         
18948         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18949
18950         * mini-exceptions.c: Fix warning.
18951
18952 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18953
18954         * mini.c: Really fix build.
18955
18956         * mini-x86.c mini-amd64.c: Fix build.
18957
18958 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18959
18960         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18961
18962         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18963         some Interlocked methods as intrinsics.
18964
18965         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18966         for Thread methods as well.
18967
18968         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18969
18970         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18971
18972         * mini-ia64.c mini-x86.c mini-amd64.c 
18973         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18974         OP_MEMORY_BARRIER.
18975         
18976         * mini.c (mono_init_exceptions): Fix build breakage.
18977
18978 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18979
18980         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18981         of instructions. Use the new ia64_unw_op macros for emitting unwind
18982         info.
18983
18984         * mini.c (mono_init_exceptions): Initialize exception handling
18985         related trampolines at startup.
18986
18987 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18988
18989         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18990
18991 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18992
18993         * mini.c: Handle type loading errors gracefully during compilation and
18994         throw the appropriate exception.
18995
18996 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18997
18998         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18999         for the mono binary.
19000
19001 2005-09-09  Martin Baulig  <martin@ximian.com>
19002
19003         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
19004         the release.
19005
19006 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19007
19008         * mini-arm.h: use emulation for conv.r.un for the release.
19009
19010 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
19011
19012         * mini-arm.c, objects.cs: more fixes and tests for them.
19013
19014 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19015
19016         * mini-arm.c: align structures to at least 4 bytes to be able
19017         to keep our current optimized memcpy.
19018
19019 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
19020
19021         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
19022
19023 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19024
19025         * mini.c: ignore SIGPIPE.
19026
19027 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
19028
19029         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
19030
19031         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
19032
19033 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
19034
19035         * mini.h: Add prototype for mono_allocate_stack_slots_full.
19036
19037 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
19038
19039         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
19040         exception handling support.
19041         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
19042         patch by Brian Koropoff <briank@marakicorp.com>).
19043
19044 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
19045
19046         * mini.c: revert another 'optimization' which breaks when
19047         items on the eval stack need to be saved at a basic block end
19048         (bug #75940).
19049
19050 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19051
19052         * jit-icalls.c: for arrays, ensure we always provide
19053         lower bounds.
19054
19055 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19056
19057         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19058         
19059         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19060
19061 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19062
19063         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19064         arguments in their original register.
19065
19066 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19067
19068         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19069         memset/memcpy.
19070
19071         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19072         when ssapre is enabled.
19073
19074         * inssel-long.brg: Fix bug in previous patch.
19075
19076         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19077         multiplication by a constant.
19078
19079 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19080
19081         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19082         icc.
19083
19084         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19085         saving registers.
19086
19087 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19088
19089         * inssel-arm.brg: apply changes tested by Brian Koropoff
19090         <briank@marakicorp.com>.
19091
19092 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19093
19094         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19095         
19096 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19097
19098         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19099         to the same register if dreg is just a base register.
19100         (print_ins): Improve printing of membase opcodes.
19101
19102         * inssel-x86.brg: Add optimized ldind(reg) rules.
19103
19104         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19105
19106 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19107
19108         * mini.c: when running under valgrind, set the stack bottom for
19109         the GC at the actual approximate stack for the app (fixes running
19110         mono with valgrind).
19111
19112 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19113
19114         * mini.c: do no break at the first valuetype to init found
19115         (fixes bug #75791).
19116
19117 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19118
19119         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19120
19121 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19122
19123         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19124
19125 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19128
19129 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19130
19131         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19132
19133         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19134         code.
19135
19136         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19137         code.
19138
19139         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19140         methods.
19141
19142 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19143
19144         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19145
19146 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19147
19148         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19149         in the tail recursion optimization.
19150
19151         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19152         debug info into the assembly file.
19153
19154         * iltests.il: Add test for filter regions.
19155
19156         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19157         initial stack of filter regions. Fixes #75755.
19158
19159 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19160
19161         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19162         stack requirements.
19163
19164 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19165
19166         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19167         the check for an already compiled method on non-ia64 platforms.
19168         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19169         proper domain.
19170
19171         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19172
19173         * inssel-x86.brg: Add some optimized call rules.
19174
19175 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19178         method here.
19179
19180         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19181         mono_arch_patch_delegate_trampoline.
19182
19183         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19184
19185         * mini-trampolines.c: Fix build.
19186
19187         * mini-amd64.h: Add delegate trampolines.
19188
19189         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19190
19191         * inssel-amd64.brg: Add optimized call rules.
19192         
19193         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19194
19195         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19196
19197 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19198
19199         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19200         change.
19201
19202         * mini-ia64.c: Remove LMF fixmes.
19203
19204         * mini-ia64.h: Remove most fields from LMF.
19205
19206         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19207
19208         * mini-trampolines.c: Add support for IA64 function descriptors.
19209
19210         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19211         for IA64 function descriptors.
19212
19213 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19214
19215         * tramp-arm.c: patch the vtable for virtual calls. Added
19216         support code to register/unregister the LMF.
19217         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19218         more LMF work.
19219
19220 2005-08-19  Dick Porter  <dick@ximian.com>
19221
19222         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19223         bit value if needed.
19224
19225 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19226
19227         * mini.c (mini_get_method): Move handling of wrapper data here.
19228
19229         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19230
19231         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19232         virtual.
19233
19234         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19235         bblock->code does not remain empty.
19236
19237 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * arrays.cs: Add regression test for #75832.
19240
19241         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19242         rules. Fixes #75832.
19243
19244         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19245         instruction scheduling.
19246
19247 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19250
19251 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19254
19255         * mini-codegen.c: Fix VC build.
19256
19257         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19258
19259 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19260
19261         * mini.h: fix signature for mono_register_opcode_emulation.
19262
19263 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * mini.c: Get rid of most of the helper_sig_... constants using
19266         mono_create_icall_signature ().
19267
19268 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * jit-icalls.c (helper_ldstr): New helper function.
19271
19272         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19273
19274         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19275         throw, load the string using a helper call instead of creating a string object.
19276
19277         * aot.c: Update after LDSTR changes.
19278
19279         * mini.h: Bump AOT file version.
19280         
19281         * aot.c: Save class size info into the AOT file. Print more statistics during
19282         compilation.
19283
19284         * mini.h: Bump AOT file version.
19285
19286         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19287         ordering of disasm cases. Fixes #74957.
19288
19289 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19290
19291         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19292         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19293         the generic code needed for the ARM port.
19294
19295 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19296
19297         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19298         inssel-arm.brg: more ARM features and fixes.
19299
19300 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19301
19302         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19303         ARM port work in progress.
19304
19305 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19306
19307         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19308
19309         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19310
19311         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19312
19313         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19314
19315         * *-ia64.*: Ongoing IA64 work.
19316         
19317         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19318
19319 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * TODO: Remove out-of-data todo stuff.
19322
19323         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19324         dead code.
19325
19326         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19327
19328         * mini.h: Bump corlib version.
19329
19330 2005-07-27  Martin Baulig  <martin@ximian.com>
19331
19332         * mini-codegen.c
19333         (create_copy_ins): Added `const unsigned char *ip' argument; set
19334         `copy->cil_code' from it.
19335
19336 2005-07-27  Martin Baulig  <martin@ximian.com>
19337
19338         * mini-exceptions.c (mono_handle_exception): Don't call
19339         mono_debugger_handle_exception() for filters.
19340
19341 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19344         as well.
19345
19346 2005-07-26  Martin Baulig  <martin@ximian.com>
19347
19348         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19349
19350         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19351         helper_compile_generic_method() if the method is actually virtual
19352         and non-final.
19353
19354 2005-07-26  Martin Baulig  <martin@ximian.com>
19355
19356         * mini.c
19357         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19358         public; this is now accessed directly by the debugger.
19359         (mono_generic_trampoline_code): Removed.
19360
19361         * debug-mini.c
19362         (mono_debug_init_method): Also add interncalls and wrappers.
19363
19364 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19367
19368 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19369
19370         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19371
19372 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19375
19376 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19377
19378         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19379         getting TLS offsets on AMD64 too.
19380
19381 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19382
19383         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19384
19385 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19386
19387         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19388         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19389
19390 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19393
19394         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19395         to mini.c.
19396
19397         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19398         mono_sparc_is_virtual_call ().
19399         
19400         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19401
19402         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19403         trampoline parameters.
19404
19405         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19406         
19407         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19408         to mono_arch_get_vcall_slot_addr.
19409
19410         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19411         trampoline code.
19412
19413         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19414
19415 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19418
19419 2005-07-19  Martin Baulig  <martin@ximian.com>
19420
19421         * exceptions-amd64.c (throw_exception): Call
19422         mono_debugger_throw_exception() here like we're doing it on i386.
19423
19424 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19425
19426         * mini-ia64.c: Add optimized TLS access support.
19427
19428 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19429
19430         * mini-exceptions.c: Ongoing IA64 work.
19431
19432         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19433
19434         * mini.c: Use the default optimization set when embedding. Fixes
19435         #75194.
19436
19437 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19440         of trampolines to a separate file.
19441
19442         * mini-trampolines.c: New file.
19443
19444         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19445         separate file.
19446         
19447         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19448         amd64/ia64 code.
19449
19450         * mini-codegen.c: Fix cygwin build.
19451
19452 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19453
19454         * mini.c: Add some minor changes needed by the IA64 port.
19455
19456         * *-ia64.*: Ongoing IA64 work.
19457
19458 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19461         trampolines into arch-independent and arch-dependent parts.
19462
19463         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19464
19465 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19468
19469         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19470         the xp-regalloc-branch for amd64.
19471
19472         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19473         xp-regalloc-branch for x86.
19474
19475 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19478
19479 2005-07-06  Martin Baulig  <martin@ximian.com>
19480
19481         * mini.c
19482         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19483         (mono_jit_runtime_invoke): Likewise.
19484
19485 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19488         on x86 too.
19489         
19490         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19491         without loading their metadata. Reorganize the file format so exception handling+
19492         debug info is kept separate from normal method info. Create MonoJitInfo 
19493         structures for methods lazily.
19494
19495         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19496         loading metadata.
19497         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19498
19499         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19500
19501         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19502         in AOT code.
19503
19504         * mini.h: Bump AOT file version.
19505
19506 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19507
19508         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19509
19510 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19511
19512         * Makefile.am (check-local): Call semdel-wrapper.
19513
19514 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * mini-x86.c: Revert the last change as it seems to break the build..
19517
19518 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19519
19520         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19521         
19522         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19523
19524 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19525
19526         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19527         outside of the macro, so strange stuff doesn't happen with gcc4
19528         (NEW_AOTCONST_TOKEN): Likewise.
19529
19530 2005-06-28  Martin Baulig  <martin@ximian.com>
19531
19532         * mini.c (mini_class_is_system_array): New static method; use this
19533         instead of `klass->parent == mono_defaults.array_class' everywhere
19534         since this also works for the new generic array class.
19535
19536 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19537
19538         * inssel.brg: Remove warnings.
19539
19540 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * mini-ia64.c: Ongoing IA64 work.
19543
19544         * basic-float.cs: Add float->i1 conversion test.
19545
19546         * iltests.il: Add conv.u4 test.
19547
19548 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * inssel-long.brg: Fix bug caused by last change.
19551
19552 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19553
19554         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19555         BSDs.  Allows the x86 JIT to work on OSX86
19556
19557 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19558
19559         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19560         u4->i8 conversion.
19561
19562         * mini-ia64.c: Ongoing IA64 work.
19563
19564 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19565
19566         * mini-ia64.c: Ongoing IA64 work.
19567
19568         * driver.c: Clean up jit_code_hash as well when using --regression.
19569
19570         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19571
19572         * basic-long.cs: Add tests for long->u4 conversion.
19573
19574 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19575
19576         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19577         that we do not depend on undefined C behavior: the order stuff
19578         gets evaluated within an expression. Fixes mono when compiled on
19579         GCC 4.
19580
19581 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * *-ia64.*: Ongoing IA64 work.
19584
19585         * aot.c: Lower memory usage while loading AOT methods.
19586
19587         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19588
19589         * mini.h: Bump AOT file format version.
19590
19591 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19592
19593         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19594
19595 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19596
19597         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19598         not on callee assembly). Fixed some comments.
19599
19600 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19603         it gets proper disassembly.
19604         (emit_method_info): Remove some dead code.
19605
19606         * mini.c (mini_method_compile): Allways allocate the GOT var in
19607         mono_method_to_ir for emulating opcodes.
19608
19609 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19612         before freeing the code memory. Fixes #74990.
19613
19614         * objects.cs: Add regression test for #74992.
19615
19616         * liveness.c: Extend live ranges of arguments to the beginning of the
19617         method. Fixes #74992.
19618
19619         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19620         so it points into the faulting instruction.
19621
19622 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19625
19626         * *-ia64.*: Ongoing IA64 work.
19627
19628         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19629
19630 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19633
19634         * *-ia64.*: Ongoing IA64 work.
19635
19636 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19637
19638         * basic-long.cs: Add tests for add/sub.ovf.
19639
19640         * basic.cs: Add tests for sub.ovf.
19641
19642         * *-ia64.*: Ongoing IA64 work.
19643
19644 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19645
19646         * *-ia64.*: Ongoing IA64 work.
19647
19648         * basic.cs: Add conv.ovf.i4.un test.
19649
19650 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19651
19652         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19653         
19654 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19655
19656         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19657
19658 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19659
19660         * *-ia64.*: Ongoing IA64 work.
19661
19662 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19663
19664         * trace.[ch]:
19665         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19666
19667 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19670
19671 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19674
19675         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19676         of a call is callable by a near call.
19677
19678 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * mini-ia64.c: Ongoing IA64 work.
19681
19682 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19683
19684         * genmdesc.c: Make the generated array non-static.
19685
19686         * inssel-long.brg: Fix LSHR_IMM rule.
19687
19688         * *-ia64.*: Ongoing IA64 work.
19689
19690         * *-ia64.*: Ongoing IA64 work.
19691
19692 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * *-ia64.*: Ongoing IA64 work.
19695
19696         * *-ia64.*: Ongoing IA64 work.
19697         
19698         * mini-ia64.c: Ongoing IA64 work.
19699
19700         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19701
19702 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19703
19704         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19705         
19706         * objects.cs basic-long.cs: Move some tests to objects.cs.
19707
19708 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19709
19710         * *-ia64.*: Ongoing IA64 work.
19711
19712         * iltests.il: Add a new test.
19713
19714         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19715         newobj. Fixes #75042.
19716
19717 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19718
19719         * *-ia64.*: Ongoing IA64 work.
19720         
19721         * *-ia64.*: Ongoing IA64 work.
19722         
19723         * *-ia64.*: Ongoing IA64 work.
19724
19725         * basic.cs objects.cs: Move tests accessing static variables as well.
19726
19727         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19728
19729 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19732
19733         * driver.c: Always print failed tests.
19734
19735         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19736         frame pointer.
19737
19738         * *ia64*: Ongoing IA64 work.
19739
19740 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * basic.cs: Add tests for add.ovf. Fix warnings.
19743
19744 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19745
19746         * driver.c (mono_main): Avoid crash if no argument is passed to
19747         --break;  Do not use g_error, but f_printf.   And fix all other
19748         ocurrences of the same crash.
19749
19750 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19753         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19754         Fixes #74742.
19755
19756 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19757
19758         * *-ia64.*: Add beginnings of IA64 backend.
19759
19760         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19761
19762 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19765         Fixes #74925.
19766
19767         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19768
19769         * mini-amd64.c: Fix a warning.
19770
19771 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19774         in float_neg. Fixes #74897.
19775
19776         * mini-amd64.c (emit_call): Fix another near call bug.
19777
19778 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19779
19780         * declsec.c: Keep the appdomain information in the structure. Added a 
19781         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19782         value gets overwritten).
19783         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19784         an MonoAppDomain member to MonoSecurityFrame.
19785         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19786         used in the stack walk. Now use a MonoArray which grow (double) when
19787         it gets full.
19788
19789 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19790
19791         * mini.c: Re-enabled runtime cleanup, since running threads should
19792         now properly stop when exiting.
19793
19794 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19795
19796         * mini-codegen.c: New file contaning the arch-independent local
19797         register allocator. Not used by any architectures yet.
19798
19799         * mini.h linear-scan.c: Merge some changes from the 
19800         mini-xp-local-regalloc branch.
19801
19802 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * mini-amd64.c (emit_call): Fix calls to native functions when the
19805         runtime is compiled as a shared library. Fixes #74756.
19806
19807         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19808         on a literal field. Fixes #74751.
19809
19810 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19811
19812         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19813
19814 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * objects.cs: Add missing null casting test.
19817
19818 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19821         in wrapper methods. Also rename 'address' variable to 'offset'.
19822
19823 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19826         warnings.
19827         
19828         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19829
19830         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19831         work on windows.
19832
19833 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19834
19835         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19836
19837 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19840         just the last bytes.
19841
19842 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19843
19844         * aot.c (mono_compile_assembly): Fix warning.
19845
19846         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19847         by the _MSC_VER stuff.
19848
19849 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19850
19851         * inssel-long.brg: Fix #74588.
19852
19853         * cpu-amd64.md: Fix #74591.
19854
19855         * iltests.il: Add new regression tests.
19856
19857 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19860         valuetype.
19861
19862 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19865
19866         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19867         from Bill Middleton <flashdict@gmail.com>.
19868
19869 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19870
19871         * arrays.cs: Add new regression test. Fix warnings.
19872
19873 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19876         and leakage in CKFINITE.
19877
19878         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19879         this to a null op since it is called on amd64 too.
19880
19881         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19882
19883         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19884         body since this is not used on amd64.
19885         
19886         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19887
19888         * mini-amd64.c: Remove obsolete fixmes.
19889
19890         * mini.c (print_method_from_ip): Fix debugging support.
19891
19892 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19893
19894         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19895         so that expressions that don't give much gain are not reduced.
19896         * ssapre.h: Likewise.
19897
19898 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19901
19902         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19903
19904         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19905
19906 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19909
19910         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19911
19912 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19915         stack touching.
19916
19917         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19918
19919         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19920
19921         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19922
19923         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19924         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19925
19926         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19927
19928         * mini-x86.c: Fix up stack overflow handling.   
19929
19930         * exceptions.cs: Add new regression test.
19931
19932 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19935         mono_jit_thread_attach.
19936
19937         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19938
19939 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19940
19941         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19942         avoid calling constructors using callvirt.
19943
19944         * inssel.brg: Fix #74073.
19945
19946 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19947
19948         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19949         compilation with non-GCC compilers.
19950         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19951         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19952
19953 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19954
19955         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19956         klass->interface_offsets (will likely fix bug#74073).
19957
19958 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19961
19962 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19963
19964         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19965         to amd64_div_reg_size ().
19966         
19967         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19968
19969 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19972
19973 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19976
19977 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19980         
19981         * mini.c (mono_precompile_assembly): Load and precompile referenced
19982         assemblies as well. Fixes #74015.
19983
19984 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19985
19986         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19987
19988 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19989
19990         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19991         a lot of checks and (anyway) permissions cannot work until corlib is 
19992         loaded.
19993
19994 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19995
19996         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19997
19998 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19999
20000         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
20001         calls (fixes bug#72824).
20002
20003 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20004
20005         * mini.c: fix tail recursion elimination (see test in bug#73936).
20006
20007 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
20010         some fp functions in sse2 mode.
20011
20012 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
20015
20016 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * mini.h mini.c: Add mono_get_jit_tls_key ().
20019
20020         * mini-x86.c: Enable fast TLS support on windows.
20021
20022 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
20023
20024         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
20025         * mini.c: Check for p/invoke method when generating code. If a
20026         p/invoke method, or it's class, isn't decorated with [Suppress
20027         UnmanagedCodeSecurity] then generate code to call System.Security.
20028         UnmanagedDemand (only if the security manager is active).
20029
20030 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
20033         last change as it seems to cause strange crashes.
20034         
20035 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20036
20037         * *.c: handle unsafe function pointers where needed.
20038
20039 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * mini.c (mono_jit_free_method): Remove the fixme too.
20042
20043 2005-03-15  Miguel de Icaza  <miguel@novell.com>
20044
20045         * mini.c: As discussed, make the code actually free the delegate
20046         thunk now, to enable the debugging of delegate problems, use
20047         MONO_DEBUG=1 when running Mono. 
20048
20049         This takes also care of parts of the leaks as seen by Joe.
20050
20051 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20054         thread_tls_offset calculation.
20055
20056 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20057
20058         * declsec.c: Reworked linkdemand checks for icall. The previous code
20059         was using the declaration code (untrusted) and didn't work as expected
20060         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20061         specific case.
20062
20063 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * iltests.il: Add new localloc test.
20066
20067         * mini-amd64.c: Handle large stack allocations the same way as on
20068         windows if stack overflow handling is working.
20069         
20070         * mini-amd64.c: Allocate the signal stack using mmap.
20071
20072         * mini.c (sigsegv_signal_handler): Fix reading of context.
20073
20074         * mini-exceptions.c: Fix up stack overflow handling.
20075
20076         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20077
20078         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20079
20080         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20081
20082         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20083
20084         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20085         tramp_init functions as they are no longer needed.
20086
20087 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20090         
20091         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20092
20093         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20094         
20095         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20096         support that now.
20097
20098         * mini-ops.h: Add OP_LMUL_IMM.
20099
20100         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20101         long mul/div opcodes as intrinsic.
20102
20103         * mini-amd64.c (emit_call): Handle the case when the callee might be
20104         an AOT method.
20105
20106 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20109         extra safe.
20110         
20111         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20112
20113         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20114
20115 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20116
20117         * mini.c (mono_codegen): Don't leak here, to help people running
20118         monogrind.
20119
20120 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20123         conversions in sse2 mode.
20124
20125         * basic-float.cs: Add regression test.
20126         
20127         * mini-amd64.c: Reenable sse2.
20128
20129 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20132
20133 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20134
20135         * driver.c: Copyright text should include 2005.
20136         
20137 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * cpu-amd64.md (load_membase): Fix more max lengths.
20140
20141 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * cpu-amd64.md (load_membase): Fix max length.
20144
20145         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20146
20147         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20148
20149         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20150         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20151
20152         * basic-float.cs: Add rounding regression test.
20153
20154         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20155
20156 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20157
20158         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20159         structures in registers for pinvoke wrappers.
20160
20161 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20162
20163         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20164
20165 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20166
20167         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20168         wrapper to mono_jit_thread_attach.
20169
20170         * mini.c (mini_jit_thread_attach): New jit icall.
20171
20172         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20173         native->managed wrappers.
20174
20175         * exceptions.cs: Add new regression test.
20176
20177         * mini.c (optimize_branches): Check regions in the cbranch to throw
20178         block case as well. Fixes #73242.
20179
20180 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20181
20182         * mini.c: thread safety fixes.
20183
20184 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20185
20186         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20187         patching stuff, since delegates use jump trampolines so there is
20188         no caller.
20189
20190         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20191         jump trampolines.
20192         
20193         * tramp-amd64.c: Fix build.
20194
20195         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20196         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20197
20198         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20199         Rename this to mono_arch....
20200         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20201
20202         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20203
20204         * mini-amd64.c (emit_call): If both the caller and the callee is
20205         guaranteed to have 32 bit addresses, emit a normal call.
20206
20207         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20208
20209         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20210         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20211         method_ptr inside delegates.
20212
20213 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20214
20215         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20216         invalidated. Fixes #73001.
20217
20218         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20219
20220         * mini-x86.c: Only use stdcall for pinvokes on windows.
20221
20222 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20223
20224         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20225         * mini-x86.c: remove unreliable __thread var offset detection,
20226         use the correct accessors and enable by default.
20227
20228 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * mini.c (mono_jit_free_method): Fix memory leak.
20231
20232 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20233
20234         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20235
20236 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20237
20238         * cpu-amd64.md: Fix lengths of atomic opcodes.
20239
20240 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20241
20242         * driver.c: try to not imply using ICU is any good.
20243
20244 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20247         functions as inline ops.
20248
20249         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20250         some Interlocked functions as inline ops.
20251
20252         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20253
20254         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20255
20256         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20257
20258         * mini.c: Add support for OP_NOT_TAKEN.
20259
20260         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20261         structures in registers for pinvoke wrappers.
20262
20263         * mini-amd64.c: Fix warnings.
20264
20265 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20266
20267         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20268
20269         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20270
20271         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20272         address instead of loading the address from it.
20273
20274         * mini-x86.c: Add support for returning small structs in registers
20275         on Win32. Fixes part of #70864.
20276         
20277 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * trace.c (get_token): Improve error checking.
20280
20281 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20284
20285 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20286  
20287         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20288         it can be reused for MonoClass.
20289         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20290         _LINKDEMAND.
20291
20292 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20293
20294         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20295         instead of a MonoReflectionMethod. The method information wasn't used
20296         when displaying SecurityException details (but will be now).
20297
20298 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20299
20300         * Makefile.am : windows build fix.
20301
20302 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * iltests.il: Add new regression test.
20305
20306         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20307         #72522.
20308
20309 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20310  
20311         * mini.c: Moved linkdemand check into helper function check_linkdemand
20312         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20313         LDFTN, LDVIRTFTN).
20314
20315 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20316
20317         * declsec.c: Added statistics counter for different kinds of 
20318         LinkDemands.
20319         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20320         (and commented) declaration.
20321         * mini.c: Added statistics counter for security Demand code 
20322         generation. Added display of security statistics.
20323
20324 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20327         Fix compilation errors under gcc-2.95.
20328
20329 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20330
20331         * mini.c, driver.c: Use the new jit trampoline hashtable
20332
20333 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20334
20335         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20336
20337 2005-02-11  Martin Baulig  <martin@ximian.com>
20338
20339         * debug-mini.c (mono_debug_close_method): Free the line number array.
20340
20341 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20344         icalls.
20345
20346         * mini.h: Bump AOT file format version. 
20347
20348 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20349
20350         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20351         APTC and P/Invoke.
20352         * declsec.h: Added macros to get/set lazyly initialized security 
20353         informations about assemblies. Added new enum for different type of
20354         possible LinkDemand violation. Added function to check LinkDemands.
20355         * mini.h: Added a field to MonoCompile to hold any security violation
20356         detected when JITting a method (so it can be thrown later).
20357         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20358         and CEE_CALLVIRT. Added code to throw exception at the end of
20359         mini_method_compile (note: the exception is unhandled right now).
20360
20361 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20362
20363         * mini.c, jit-icalls.c: use the managed implementation of
20364         memset for initobj and memset, to avoid managed <-> unmanaged
20365         transitions.
20366
20367 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20370         optimization if it would need a GOT var.
20371
20372         * basic.cs: Add tests for constant propagation and switch statements.
20373
20374         * ssa.c: Fix out-of-range constant propagation and switch statements.
20375
20376 2005-02-09    <vargaz@freemail.hu>
20377
20378         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20379
20380 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20383
20384 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20385
20386         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20387
20388 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20389
20390         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20391         arithmetic operations.
20392
20393 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20394
20395         * mini-ppc.c: add a workaround for broken user code that
20396         DllImports vararg functions with non-vararg signatures.
20397
20398 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20401         meaningfull error message for assemblies written in Managed C++.
20402
20403         * tramp-amd64.c mini-amd64.h: Add support for 
20404         create_trampoline_from_token ().
20405
20406         * aot.c mini-x86.c abcremoval.c: Applied patch from
20407         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20408
20409 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20412         which takes a MonoImage/token as parameter instead of a MonoMethod.
20413
20414         * aot.c: Use the new trampoline for initializing vtables.
20415
20416         * aot.c: Add support for ldfld/stfld_remote wrappers.
20417
20418         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20419         rules for compare <MEM>, IMM.
20420
20421         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20422
20423         * aot.c: Handle inherited finalizers correctly.
20424
20425 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * inssel.brg (stmt): Add a missing _setup_... ().
20428
20429         * aot.c: Save some parts of the class state to the AOT file and use it
20430         to recompute that state when a class is initialized.
20431
20432         * mini.c: Install AOT hooks into the runtime.
20433
20434         * mini.h: Bump AOT file format version.
20435         
20436         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20437         Fixes #72148.
20438
20439         * iltests.il: Add new test.
20440
20441 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20442
20443         * mini.c: fix typo.
20444
20445 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20446
20447         * mini.c: setup the statistical profiler in the thread attach
20448         callback to cope with the new single thread code.
20449
20450 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20451
20452         * mini-ppc.c: ensure we have enough room for the profiler
20453         calls (fixed bug#72084).
20454
20455 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20456
20457         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20458         it.
20459
20460 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20461
20462         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20463
20464 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20465
20466         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20467         to succesfully execute parrotbench).
20468         * ssapre.h: Likewise.
20469
20470 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20471
20472         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20473         variable for stores to method arguments (fixes a SSAPRE issue).
20474
20475 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20476
20477         * mini.c: handle value types in dup, fixes gen-112.cs.
20478
20479 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20480
20481         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20482         sequence for calls in dynamic methods to avoid thunks.
20483
20484 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20485
20486         * mini.c: correctly remove dynamic methods from the hashtable.
20487
20488 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20489
20490         * driver.c: Disabled SSAPRE until fix the bug that appears
20491         in IronPython's parrotbench.
20492
20493 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20494
20495         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20496
20497         * mini.c (mono_method_to_ir): Revert the previous change.
20498         
20499         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20500         when AOT compiling.
20501
20502         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20503         mono_jit_info_table_find () etc. when running under valgrind.
20504
20505         * inssel.brg: Fix warnings.
20506
20507         * mini-exceptions.c: Fix warnings.
20508
20509 2005-01-31  Martin Baulig  <martin@ximian.com>
20510
20511         * driver.c (compile_all_methods_thread_main): Don't try to compile
20512         generic methods or anything which has type parameters.
20513
20514 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20515
20516         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20517
20518         * TestDriver.cs: Add --verbose flags.
20519
20520         * graph.c ssa.c: Fix 64 bit warnings.
20521         
20522         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20523         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20524         Fix 64 bit warnings.
20525
20526         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20527         variable not spotted by gcc.
20528         
20529         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20530         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20531         X86_COMPARE_MEMBASE opcodes.
20532
20533         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20534
20535 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20536
20537         * *: MonoMethod->signature might be NULL now. You *MUST* use
20538         mono_method_signature.
20539
20540 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20541
20542         * driver.c (compile_all_methods_thread_main): Compile the methods
20543         without invoking cctors.
20544
20545 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20546
20547         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20548         * basic-calls.cs: test for the above.
20549
20550 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20551
20552         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20553         MonoJitInfo changes.
20554
20555 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20558         eagerly if it contains dynamic methods.
20559         
20560         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20561
20562         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20563         trace, it is now computed by an icall from trace_ips.
20564         
20565         * mini-exceptions.c: Fix a warning.
20566
20567 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20568
20569         * mini-exceptions.c: don't bother getting stack trace info if
20570         it's not going to be used.
20571
20572 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20573
20574         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20575         ssapre-mini-ops.h.
20576
20577 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20578
20579         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20580
20581         * aot.c: Avoid calling mono_method_get_header () if not needed.
20582
20583         * mini.h: Bump AOT file format version.
20584         
20585         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20586
20587         * mini.c (mono_print_tree): Print more info for calls.
20588
20589 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20590
20591         * declsec.h: Remove warning by adding missing include for marshal.h
20592
20593 2005-01-26  Martin Baulig  <martin@ximian.com>
20594
20595         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20596         `ip' twice.
20597
20598 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20599
20600         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20601         flags.
20602
20603         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20604
20605         * aot.c (mono_compile_assembly): Fix a warning.
20606
20607 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20608
20609         * declsec.c: Look for security attributes on the original MonoMethod 
20610         (and not the wrapped one). This fix permissions on icalls.
20611
20612 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20613
20614         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20615
20616         * mini.c (mono_allocate_stack_slots): Add a fixme.
20617
20618         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20619
20620 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20621
20622         * inssel.brg: optimize casts of sealed types (more
20623         optimizations waiting for fixes in remoting).
20624
20625 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20626
20627         * inssel.brg (stmt): Add another dummy rule.
20628
20629         * driver.c: Fix warnings.
20630
20631         * driver.c (mono_main): If running under valgrind, instruct glib to use
20632         the system allocation functions so valgrind can track the memory
20633         allocated by the g_... functions.
20634
20635         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20636
20637         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20638
20639         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20640
20641         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20642         variables in try regions.
20643
20644         * mini.c (mini_method_compile): Don't disable optimizations on large
20645         methods when AOT compiling.
20646
20647         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20648         allocate stack slots. Not yet used.
20649
20650 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20651
20652         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20653
20654 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20655
20656         * mini-ppc.c: make the branch info relative as the code
20657         buffer can be reallocated.
20658
20659 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20660
20661         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20662         * driver.c: Removed the AOT/security restriction. Now initialize the
20663         security manager (in metadata) if --security is used.
20664         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20665         rather than the pointer to declarative security, when AOT is used.
20666
20667 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20668
20669         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20670         basic blocks, reduced intrinsic exception throwing code size.
20671
20672 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20673
20674         * driver.c (mini_usage): Reorder the usage screen.
20675
20676 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20677
20678         * mini.c (mono_resolve_patch_target): Fix warning.
20679
20680 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20681
20682         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20683         previous patch.
20684
20685         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20686
20687         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20688         breaks the amd64 build.
20689
20690         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20691         register allocation. Fixes #71454.
20692
20693         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20694
20695         * arrays.cs: Add new regression test.   
20696
20697 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20698
20699         * ssapre.c: Turned usage of snprintf to GString.
20700         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20701         (I left it on by mistake in my previous commit).
20702
20703 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20704
20705         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20706         on cond branch optimization (fixes bug# 71515).
20707
20708 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20709
20710         * abcremoval.c: Fixed bug 71062.
20711         * abcremoval.h: Likewise.
20712
20713 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20714
20715         * mini.c: Added a new functionality to optimize_branches, the removal
20716         of useless basic blocks, and fixed some problem in the removal of
20717         critical edges; some utility functions added for both purposes.
20718         * ssapre.c: Added complex expression support, and fixed bug 70637.
20719         * ssapre.h: Likewise.
20720         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20721         enabled in SSAPRE.
20722         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20723         * driver.c: Re-enabled SSAPRE.
20724
20725 2005-01-19  Martin Baulig  <martin@ximian.com>
20726
20727         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20728         the result of mono_get_method_constrained().
20729
20730 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20731
20732         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20733         manager.
20734
20735 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20736
20737         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20738         be detected.  Fixes #59296.
20739
20740 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20741
20742         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20743         which can happen. Fixes #71361.
20744
20745 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20748         manager.
20749
20750 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20751
20752         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20753         appdomain-unload.exe to fail.
20754         
20755         * mini.c: Fix some memory leaks.
20756
20757 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20758
20759         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20760         Fixed bug and sped up some codepaths.
20761
20762 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * mini.c: Fix some memory leaks.
20765
20766         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20767         conversion.
20768
20769         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20770
20771         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20772         #71320.
20773
20774         * iltests.il: Add regression test for #71320.
20775
20776 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20777
20778         * mini.c (mono_codegen): Fix installation of profiler hooks.
20779
20780         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20781
20782 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20783
20784         * mini.h, mini.c, cfold.c: optimize access to enum
20785         readonly fields, too. Eval conditional branches if possible
20786         to perform unreachable code removal in more cases.
20787
20788 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20789
20790         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20791
20792         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20793         code manager.
20794
20795         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20796         WinXP DEP. Fixes #71244.
20797
20798 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20799
20800         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20801
20802 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20803
20804         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20805
20806 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20807
20808         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20809         changes.
20810
20811         * mini.h: Bump AOT version.
20812
20813         * mini.h (MonoCompile): Change exvar to a hash table.
20814
20815         * mini.c: Allocate a separate exvar for each handler block.
20816
20817         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20818
20819         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20820         ex var with the pending exception and only throw if the two are equal.
20821         Fixes #68552.
20822         
20823         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20824
20825         * mini-x86.c: Fix warnings.
20826
20827         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20828         used by all the ports now.
20829
20830         * aot.c: Add write-symbols and save-temps options.
20831
20832 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20833
20834         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20835
20836 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20837
20838         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20839         operations.
20840
20841         * tramp-s390.c: Check vtable slot belongs to the domain.
20842
20843         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20844         as per other platforms.
20845
20846         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20847
20848 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20849
20850         * driver.c: we don't run the Main() code in a subthread anymore.
20851
20852 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20853
20854         * mini.c: added experimental rtc support in the statistical
20855         profiler: if the user has the permission, more accurate statistics
20856         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20857         The MONO_RTC value must be restricted to what the linux rtc allows:
20858         power of two from 64 to 8192 Hz.
20859
20860 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20863
20864 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20865
20866         * mini-ppc.c: better icache flush for smp.
20867
20868 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20869
20870         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20871
20872         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20873         amd64 port, not yet used.
20874
20875 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20878         a struct type.
20879
20880 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20881
20882         * driver.c: Added --security option to activate the security manager.
20883         Right now this will allow code generation for declarative demands and
20884         is disabled when AOT is specified.
20885         * mini.c: Add code generation for declarative security demands.
20886         * mini.h: Add mono_use_security_manager as an extern gboolean.
20887
20888 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20891         emitting more dense assembly code.
20892
20893         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20894         exception throwing stuff.
20895
20896 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20899         dead code.
20900
20901         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20902         left in by mistake.
20903
20904         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20905         fixed.
20906
20907         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20908
20909         * tramp-*.c: Only patch vtable slots if the object is in the current
20910         domain. Fixes appdomain-unload.exe.
20911
20912         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20913         
20914         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20915         x86 branch.
20916
20917 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20918
20919         * mini.c (reverse_branch_op): New helper function.
20920
20921         * mini.c (optimize_branches): Run the new optimization only on 
20922         platforms which support it. Also reverse all kinds of branches.
20923
20924         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20925
20926         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20927         a throw statement.
20928
20929         * mini.c (optimize_branches): Reverse not-equals branches if the false
20930         bblock is a throw. This happens a lot of time with argument checking in
20931         corlib.
20932
20933         * mini.c (mono_codegen): Add support for placing basic blocks after
20934         the function epilogue.
20935
20936         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20937         function epilogue.
20938         
20939 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20940
20941         * mini.c (setup_stat_profiler): Only set this up if the platform
20942         supports ITIMER_PROF.
20943
20944 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20945
20946         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20947         previous patch.
20948
20949         * inssel.brg: Fix a warning.
20950
20951 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20952
20953         * mini.c: added support for statistical profiler 
20954         (run with: --profile=default:stat).
20955
20956 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20957
20958         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20959
20960         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20961
20962         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20963         related to global registers from the amd64 port.
20964
20965 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20966
20967         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20968
20969         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20970         with global registers.
20971         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20972
20973         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20974
20975 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20976
20977         * debug-mini.c (encode_value): Fix off-by-one.
20978
20979         * aot.c (encode_value): Likewise.
20980
20981         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20982
20983 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20984
20985         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20986         AOT.
20987
20988         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20989         
20990         * aot.c (emit_method_info): Increase size of temp buffer.
20991
20992         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20993         the AOT case.
20994
20995 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * aot.c (emit_method_info): Fix build.
20998         
20999         * aot.c: Further rework of the AOT file format to reduce the size of
21000         the method info data.
21001
21002         * mini.h: Bump AOT file format version.
21003
21004 2004-12-27  Martin Baulig  <martin@ximian.com>
21005
21006         * mini.c (mini_get_method): New static method; call
21007         mono_get_method_full() and mono_get_inflated_method().
21008         (mono_method_to_ir): Use mini_get_method() instead of
21009         mono_get_method_full(). 
21010
21011 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
21012
21013         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
21014
21015 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
21016
21017         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
21018
21019         * inssel-amd64.brg: Add some optimization rules.
21020
21021 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21022
21023         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
21024         standard not GC'd stuff is fine.
21025
21026 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * aot.c: Rework the AOT file format to get rid of most of the global
21029         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
21030
21031         * mini.h: Bump AOT file format version.
21032         
21033 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * mini.h: Bump AOT file format version.
21036
21037         * aot.c (mono_aot_is_got_entry): New function to determine if an 
21038         address is inside a GOT.
21039
21040         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
21041
21042         * cpu-pentium.md: Increase the maximum size of some instructions which
21043         might involve a got access.
21044         
21045         * mini.c (get_method_from_ip): Another debug helper function.
21046
21047         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
21048         when got var accesses are created during the decompose phase.
21049
21050         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
21051
21052         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21053         argument mini_compile_method and to MonoCompile, and use this to
21054         determine whenever a given method is compiled for AOT. This allows the
21055         other methods compiled during AOT compilation to be free of AOT stuff,
21056         so the backends does not need to add special support for them by
21057         creating a fake GOT etc.
21058
21059         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21060         longer needed.
21061
21062 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21063
21064         * mini.c (mono_method_to_ir): It turns out that some of the
21065         x-appdomain wrappers are lax with types, so just ignore this for
21066         all wrappers.
21067
21068         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21069         at the vtable->klass. If it is non-shared code we can just use the
21070         vtable.
21071
21072 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21073
21074         * mini-ppc.c: access MonoDomain from tls, too.
21075
21076 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21077
21078         * declsec.c: Removed unused variable (and related warning ;-)
21079
21080 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21081
21082         * iltests.il: New test for LDELEMA on an array of ref types.
21083
21084         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21085         all ldelema's on reftypes.
21086         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21087         it was the wrong place to put it.
21088
21089         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21090         register to pop to make this cleaner, at the request of Paolo.
21091
21092 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21093
21094         * mini-ops.h (OP_GETHASHCODE): New op.
21095
21096         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21097
21098         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21099         operation.
21100
21101         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21102         by 25%.
21103         
21104         * mini-x86.c (mono_arch_output_basic_block): Rather than
21105
21106         add ebp, 4
21107
21108         Emit
21109
21110         pop edx
21111
21112         The first is 3 bytes while the second is 1. This saves 36 kb on
21113         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21114         see a small boost because of icache locality.
21115
21116         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21117
21118 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21119
21120         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21121         started code sharing with the generic code.
21122
21123 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21124
21125         * mini-ppc.c, cpu-g4.md: added code for direct access to
21126         tls data slots.
21127
21128 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21129
21130         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21131          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21132         to OP_TLS_GET.
21133
21134 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21135
21136         * declsec.c|h: Added functions to cache the declarative stack modifiers
21137         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21138         structure.
21139         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21140         created. Register internal calls for System.Security.SecurityFrame::
21141         _GetSecurityFrame and _GetSecurityStack.
21142         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21143         the definitions for the new stack walk/callback mechanism.
21144         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21145         first security frame for LinkDemands and InheritanceDemands) and
21146         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21147         from lupus.
21148         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21149         walk initialization (lupus).
21150
21151 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21152
21153         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21154         idiom.
21155         (handle_loaded_temps): Do not create a temporary variable for
21156         things that we know are temps. They will never be modified.
21157         (mono_spill_call): Set MONO_INST_IS_TEMP
21158         (mono_emulate_opcode): ditto
21159         (emit_tree): ditto
21160         (mono_method_to_ir.CEE_DUP): ditto
21161
21162 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21163
21164         * mini.c (type_to_eval_stack_type): Make this handle the void type
21165         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21166         (emit_tree): use ip_in_bb to special case some common idioms
21167         Update all callers to pass in the IP.
21168         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21169
21170         This gives us a nice 2% speedup in mcs bootstrap.
21171
21172         * mini-x86.c (peephole_pass): Peephole pass to make
21173         mov  [foo], eax
21174         push [foo]
21175
21176         into
21177
21178         mov [foo], eax
21179         push eax
21180
21181         * mini.c (ip_in_bb): new method.
21182         (mono_method_to_ir): use this method rather than doing the hash
21183         lookup ourselves.
21184
21185         * linear-scan.c (mono_linear_scan): When expiring actives, you
21186         don't need to keep around variables that expire on this
21187         instruction. This makes it so that:
21188              a = b + 1
21189         will turn into:
21190              store (ebx add (ebx, 1))
21191         which will become
21192              add ebx, 1
21193
21194 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21195
21196         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21197         combination to avoid doing two copies. Fix up problems with previous
21198         patch.
21199
21200         * mini.c: Fix 64 bit warnings.
21201
21202         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21203
21204 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21205
21206         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21207         changes from the x86 code.
21208
21209         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21210
21211 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21212
21213         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21214         throwing code to reduce its size, unify the AOT and non-aot code and 
21215         get rid of relocations in the AOT case.
21216
21217         * mini-x86.h mini.c exceptions-x86.c 
21218         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21219         raise corlib exceptions which doesn't require relocations in the 
21220         caller.
21221
21222         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21223
21224 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21225
21226         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21227         needed.
21228
21229         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21230         in the AOT case.
21231
21232 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21233
21234         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21235         with add function when used from Inc/dec atomic 
21236         functions. Re-enabled optimization on x86.
21237         * mini-ops.h: renamed atomic_add functions to
21238         allow _add to match the Interlocked::Add and
21239         _add_next to match Interlocked::Inc/Dec.
21240
21241 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21242
21243         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21244         linking of BBs to the end BB, and enabled SSAPRE also with
21245         consprop and copyprop (which was prevented by that bug).
21246
21247 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21248
21249         * mini-x86.c: disabling the Interlocked optimizing code. 
21250
21251 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21252
21253         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21254         file version check.
21255         
21256 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21257
21258         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21259         interlocked optimization due lack of support on x86, rewrote 
21260         exchange to take into account that base may be in eax.
21261         
21262         xsp works again; activated Interlocked optimizing code.
21263         
21264 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21265
21266         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21267
21268 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21269
21270         * mini-ops.h: Add new opcodes.
21271
21272         * mini.h: Add new patch types. Add got_var to MonoCompile.
21273
21274         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21275         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21276         make it work with all kinds of patchable code.
21277
21278         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21279         address of the GOT, and referencing entries in the GOT.
21280
21281         * mini.c: Add code to load the GOT address if needed by an opcode.
21282
21283         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21284         independent AOT code on the x86 using an elf-style Global Offset Table.
21285
21286 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21287
21288         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21289
21290 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21291
21292         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21293         when running xsp.
21294
21295 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21296
21297         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21298         of Interlocked:Increment/Decrement/Add as inline ops.
21299         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21300
21301 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21302
21303         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21304         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21305
21306 2004-12-12  Duncan Mak  <duncan@ximian.com>
21307
21308         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21309         again. `patch_info->table_size' is no longer valid after Zoltan's
21310         commit #37636.
21311
21312 2004-12-12  Martin Baulig  <martin@ximian.com>
21313
21314         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21315         if we are the "real" method, ie. not an inlined method inside it.
21316
21317 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21318
21319         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21320         before we look in the special fields table. This fixes
21321         ../tests/thread-static-init.cs.
21322
21323 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21324
21325         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21326         for Array get_Rank and get_Length. Fixes bug #70465.
21327
21328 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21329
21330         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21331         separate structure to reduce the size of MonoJumpInfo.
21332
21333 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21334
21335         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21336
21337 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21338
21339         * mini.c (mini_get_inst_for_method): Changed to allow ports
21340         to return a MonoInst instead of opcode 
21341         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21342         
21343         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21344         Allow ports to return a created MonoInst instead of op-code, will enable
21345         new optimizations.
21346         (renamed mini_get_opcode_for_method to better reflected the functionality)
21347
21348 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21351
21352 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21353
21354         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21355         Fixes #69985.
21356
21357 2004-12-08  Martin Baulig  <martin@ximian.com>
21358
21359         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21360         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21361
21362 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21365         correctly.
21366
21367         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21368         arithmetic.
21369
21370 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21371
21372         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21373
21374 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21377         bug introduced by the previous patch.
21378
21379 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21380
21381         * mini-ppc.c, objectc.cs: handle large structs passed by value
21382         (fixes bug #69972).
21383
21384 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21385
21386         * mini-ppc.c: OP_ARGLIST implementation from
21387         Geoff Norton  <gnorton@customerdna.com>.
21388
21389 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21390
21391         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21392         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21393
21394 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21395
21396         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21397
21398 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21399
21400         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21401         support.
21402
21403 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21404
21405         * mini-sparc.c: Zero out localled-ed memory.
21406
21407         * iltests.il: Add tests for zeroing out localloc-ed memory.
21408
21409 2004-12-04  Martin Baulig  <martin@ximian.com>
21410
21411         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21412         mono_method_get_signature_full().       
21413
21414 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21415
21416         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21417         and some utility functions (always for SSAPRE), integrated SSAPRE.
21418         * mini.h: Likewise.
21419         * driver.c: Added ssapre option.
21420         * ssa.c: Small fix on OP_ARG handling.
21421         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21422         * Makefile.am: Likewise.
21423
21424 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21425
21426         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21427         now in the xp code.
21428
21429         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21430         icall.
21431
21432 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21433
21434         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21435         
21436         * cpu-s390.md : Increase instruction length of oparglist.
21437
21438         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21439
21440 2004-11-30  Martin Baulig  <martin@ximian.com>
21441
21442         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21443         virtual generic methods.  We call a special helper_compile_generic_method()
21444         icall to retrieve the method from the vtable, inflate and compile
21445         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21446
21447         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21448
21449 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21450
21451         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21452
21453 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21454
21455         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21456         Fixes #69929.
21457
21458 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21459
21460         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21461         platforms with PIC aot.
21462
21463 2004-11-28  Martin Baulig  <martin@ximian.com>
21464
21465         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21466         Fixes gen-112.cs.
21467
21468 2004-11-28  Martin Baulig  <martin@ximian.com>
21469
21470         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21471         the result of mono_type_get_underlying_type() to check whether
21472         we're byref.
21473
21474 2004-11-26  Martin Baulig  <martin@ximian.com>
21475
21476         * mini.c
21477         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21478         in the g_assert().
21479
21480 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21481
21482         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21483         the same way as the other arguments so they won't get clobbered.
21484
21485         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21486         calls through R11 since it is clobbered by the trampoline code.
21487
21488 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21489
21490         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21491         pick up in-tree mscorlib.dll.
21492
21493 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21496
21497         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21498         runtime data/code are now stored in a table similar to the GOT in ELF. 
21499         This allows the code itself to be position independent.
21500
21501         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21502         loading changes.
21503
21504         * aot.c: Attach ELF type (object/function) directives to all global
21505         symbols.
21506
21507         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21508
21509         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21510
21511         * mini-amd64.h: Turn on PIC AOT code.
21512
21513         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21514         returning the offset within an OP_AOTCONST instruction where the GOT
21515         offset needs to be added.
21516
21517         * mini.h: Bump AOT file format version.
21518
21519 2004-11-25  Martin Baulig  <martin@ximian.com>
21520
21521         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21522         uninflated generic methods.
21523
21524 2004-11-25  Martin Baulig  <martin@ximian.com>
21525
21526         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21527
21528 2004-11-24  Martin Baulig  <martin@ximian.com>
21529
21530         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21531         original klass (this only applies for generic instances).
21532
21533 2004-11-24  Martin Baulig  <martin@ximian.com>
21534
21535         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21536         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21537         that array).
21538
21539 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21542         localloc. Fixes #69678.
21543
21544         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21545         
21546 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21549         used SSE registers on pinvoke calls. Fixes #69774.
21550
21551 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21552
21553         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21554         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21555
21556 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21557
21558         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21559         Refer directly to the mcs/ tree.
21560
21561 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21562
21563         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21564         Check if a trampoline for a synchronized method is required. 
21565
21566 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21567
21568         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21569         with localloc if needed. Throe arithmetric exception in
21570         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21571         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21572
21573 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21574
21575         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21576         types before switching on type.  Fixes #69622.
21577
21578 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21579
21580         * Makefile.am (check-local): New.  Integrate into 'make check'.
21581         (MCS,RUNTIME): Define using in-tree mono and mcs.
21582         (ILASM): New.
21583         (%.exe): Use $(ILASM).
21584
21585 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21586
21587         * mini-ppc.c: adjust initial prolog size (bug #69691).
21588
21589 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21590
21591         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21592         #69664.
21593
21594 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21595
21596         * Makefile.am (clean-local): Rename from 'clean'.
21597
21598 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21599
21600         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21601         to mono_arch_is_int_overflow. 
21602         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21603         SIGFPE events.
21604
21605 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21606
21607         * declsec.c|h: New files to support declarative security attributes.
21608         Added function to check if a method has (applicable) security.
21609         * mini.c|h: Add check for declarative security attributes in
21610         mono_method_check_inlining.
21611         * Makefile.am: Added declsec.c and declsec.h to the build.
21612
21613 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21614
21615         * mini.c, mini.h: update to keep dynamic code info per-domain.
21616
21617 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21620         (mini_init): Get rid of it from here too.
21621
21622 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21623
21624         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21625         implemented OP_RETHROW (patch by Geoff Norton
21626         <gnorton@customerdna.com>).
21627
21628 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21629
21630         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21631         between appdomains.  Fixes appdomain-unload on PPC.
21632
21633 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21634
21635         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21636         mini-exceptions.c: handle the new wrapper types.
21637         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21638         token value as a MonoClass* when compiling a wrapper.
21639         mono_jit_create_remoting_trampoline now takes an additional
21640         MonoRemotingTarget parameter.
21641         
21642 2004-11-10  Martin Baulig  <martin@localhost>
21643
21644         * mini.c (mono_method_to_ir): Use `generic_container->context'
21645         rather than creating a new one.
21646
21647 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21648
21649         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21650
21651         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21652
21653 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21654
21655         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21656         the experimental aot cache stuff.
21657
21658 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21659
21660         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21661         mini-exceptions.c: update to exception clause structure changes.
21662
21663 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21664
21665         * exceptions-x86.c (throw_exception): Fix warnings.
21666
21667         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21668         for OP_RETHROW.
21669
21670 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21671
21672         * exceptions-sparc.c (get_throw_exception): Really fix this.
21673
21674 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21675
21676         * tramp-*.c: we no longer support icalls without wrappers, so
21677         a bit of code can be removed here
21678
21679 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21680
21681         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21682         patch.
21683
21684         * cpu-sparc.md: Add op_rethrow.
21685
21686         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21687
21688         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21689
21690         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21691         * mini-ops.h: Add OP_RETHROW.
21692
21693         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21694
21695         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21696
21697 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21698         
21699         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21700         Makes the output much easier to read
21701
21702 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21703
21704         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21705         prevents another huge leak when compiling with ssa. Secondly, the
21706         performance of doing this rather than freeing the lists is much
21707         better. GList does a lock every time you allocate a list link,
21708         so that it can use a memory pool. So, it is better to just use
21709         a memory pool of our own.
21710         
21711         * ssa.c, linear-scan.c: replace g_list_remove_link with
21712         g_list_delete.  The remove one does not free the GList, so we were
21713         leaking memory. On -O=all --compile-all with corlib, this cut down
21714         3 MB of allocations.
21715
21716 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21717
21718         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21719
21720         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21721
21722         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21723         into a new function mono_create_jit_trampoline ().
21724
21725 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21726
21727         * trace.c (get_spec): Allow tracing of classes without a namespace.
21728
21729 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21730
21731         * mini.c: Fix pointer overwrite in mini_method_compile.
21732
21733 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21734
21735         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21736         The darwin ABI needs some special handling for 1 and 2 byte structs
21737         Lets use lbz/lhz instead of lwz everywhere.
21738         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21739         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21740         Use stb/sth for the former, and put the latter always on stack instead of in
21741         argument registers.
21742
21743 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21744
21745         * trace.c (is_filenamechar): Add '_'.
21746
21747 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21748
21749         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21750
21751         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21752
21753 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21756         depends on libmonogc. Fixes #68805.
21757
21758 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21759
21760         * mini.c (mono_jit_free_method): Provide extra information for
21761         this error.  Currently this leaks, but will be turned into a
21762         developer option in the future.
21763
21764 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21767
21768 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21771         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21772         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21773
21774 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21775
21776         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21777         trampolines for AOT code.
21778
21779 2004-10-22    <vargaz@freemail.hu>
21780
21781         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21782         constructed types. Fixes #68136.
21783
21784 2004-10-21  Martin Baulig  <martin@ximian.com>
21785
21786         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21787         if it returns true, unwind the stack to the call instruction.
21788
21789 2004-10-21    <vargaz@freemail.hu>
21790
21791         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21792
21793         * mini.h: Bump AOT version number.
21794
21795         * objects.cs: Add another test for unbox trampolines.
21796
21797         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21798         valuetype methods.
21799
21800 2004-10-20    <vargaz@freemail.hu>
21801
21802         * driver.c: Add SHARED to the set of optimizations tested.
21803
21804         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21805
21806         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21807         used by CEE_NEWARR.
21808
21809         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21810
21811 2004-10-20  Martin Baulig  <martin@ximian.com>
21812
21813         * mini-exceptions.c (mono_handle_exception): Call
21814         mono_debugger_handle_exception() to tell the debugger about
21815         catch/finally clauses.
21816
21817 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21818
21819         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21820
21821         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21822         #68447.
21823
21824 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21825
21826         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21827         methods as their native size, fixed bug #57543, #57545.
21828         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21829         This saves a temporary register and mullw call down into 1 (minor perf
21830         increase for cases like sum = sum * 5;  This use to translate into:
21831             li r11,5
21832             mullw r28,r28,r11
21833         It now translates to
21834             mulli r28,r28,5
21835
21836 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21837
21838         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21839         #68388.
21840
21841 2004-10-11  Martin Baulig  <martin@ximian.com>
21842
21843         * mini.c (mono_method_to_ir): If we're a generic method, get the
21844         MonoGenericContainer from our MonoMethodNormal and create a
21845         MonoGenericContext from it.
21846
21847 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21850
21851         * basic-long.cs: Add test for checked i8->i2 cast.
21852
21853 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21854
21855         * inssel-ppc.brg: added a couple of speedup rules.
21856
21857 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21858
21859         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21860         to speed up rebuilds.
21861
21862 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21863
21864         * mini-s390.c: Minor fix to OP_OR_IMM.
21865
21866 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21867
21868         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21869         better. Fixes appdomain-unload.exe on sparc.
21870
21871 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21872
21873         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21874         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21875         see bug 67324.
21876
21877 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21878
21879         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21880
21881 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21882
21883         * mini.c: Always generate a field read/write wrapper for members
21884         of the class MarshalByRefObject since the actual instance could
21885         be a CBO.
21886
21887 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21888
21889         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21890
21891 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21892
21893         * driver.c mini.h trace.c: Move the setting of the main assembly into
21894         a separate function called mono_trace_set_assembly () and call it after
21895         actually loading the main assembly. Fixes #66872.
21896
21897 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21900         using the code manager.
21901
21902 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21903
21904         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21905
21906 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21907
21908         * cpu-amd64.md: Fix bug in previous patch.
21909         
21910         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21911         #66650.
21912
21913 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21914
21915         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21916         mini-exceptions.c: updates for changed stack walk interface.
21917
21918 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21919
21920         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21921
21922 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21923
21924         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21925
21926 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21929         since assemblies can't be unloaded.
21930         
21931 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * cpu-amd64.md: Fix more instruction lengths.
21934
21935         * cpu-amd64.md: Fix lengths of some instructions.
21936
21937 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21938
21939         * inssel.brg: Make the array ldelema check aot friendly.
21940
21941 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21942
21943         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21944
21945         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21946
21947 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21948
21949         * mini-x86.c: Fix build.
21950
21951         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21952         mono_type_get_underlying_type () helper function to simplify code.
21953         
21954 2004-09-09  Martin Baulig  <martin@ximian.com>
21955
21956         * mini-amd64.c: Don't access `type->data.klass' directly, call
21957         mono_class_from_mono_type() instead since the type may be a
21958         generic instance.
21959
21960 2004-09-09  Martin Baulig  <martin@ximian.com>
21961
21962         * mini-amd64.c (get_call_info): Fix support for generic instances.
21963         (add_valuetype): Use mono_class_from_mono_type() to get the class
21964         since we can be a generic instance.
21965
21966 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21967
21968         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21969
21970 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21971
21972         * liveness.c: reset spill costs on each scan: bug 62107
21973
21974 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21975
21976         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21977         unnecessary line that doesn't compile
21978
21979 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21980
21981         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21982         trampolines, make them call an error function so people can fix their
21983         code.
21984
21985 2004-09-06  Martin Baulig  <martin@ximian.com>
21986
21987         * mini.c (mono_method_to_ir): When initializing locals, handle a
21988         generic instances like a valuetype if it's a valuetype and like a
21989         class if it's a class.
21990
21991 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21992
21993         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21994         stack. Fixes #64674.
21995
21996         * exceptions.cs: Add test for unwinding of call arguments.
21997
21998 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21999
22000         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
22001         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
22002         set the carry/borrow flag). The sparc and s390 implementations
22003         can now use optimized versions (and simplify the code). ppc bugfixes.
22004
22005 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22006
22007         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
22008
22009 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * inssel-amd64.brg: Remove leftover 32 bit rule.
22012
22013         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
22014
22015 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
22018         mono_arch_find_jit_info functions into a new function. Fix a memory
22019         leak.
22020
22021         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
22022         refactored code.
22023         
22024 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22025
22026         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
22027         as well.
22028         
22029         * exceptions.cs: Add array size tests.
22030
22031         * mini.c: Allocate a separate icall wrapper for each arity of 
22032         mono_array_new_va. Fixes #59509.
22033
22034         * exceptions.cs: Add testcase for 64578.
22035
22036         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
22037
22038         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
22039         
22040 2004-09-02  Martin Baulig  <martin@ximian.com>
22041
22042         * mini.c (mono_method_to_ir): When initializing the locals, call
22043         handle_initobj() on the generic instance itself, not its
22044         underlying type.
22045
22046 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22047
22048         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
22049         MonoJitInfo for dynamic methods.
22050
22051         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
22052
22053         * mini.c: Add support for freeing JIT data for dynamic methods.
22054         
22055 2004-09-01  Martin Baulig  <martin@ximian.com>
22056
22057         * mini-x86.c (is_regsize_var): Added support for generic
22058         instances.
22059         (mono_arch_emit_prolog): Make this compile again, use
22060         `x86_push_imm_template (code)'.
22061
22062 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22063
22064         * mini-x86.c: make all push_imm instructions that get
22065         patched always emit the long form
22066
22067 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22068
22069         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22070         in a per-domain hash.
22071
22072         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22073         types.
22074
22075 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22076
22077         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22078         work.
22079         
22080         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22081         work.
22082
22083         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22084         Beginnings of SSE2 support.
22085
22086         * exceptions.cs: Add more tests for checked int<->uint casts.
22087
22088 2004-08-28  Martin Baulig  <martin@ximian.com>
22089
22090         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22091         generic instances.
22092
22093         * mini.c
22094         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22095         Handle generic instances recursively.
22096
22097 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22098
22099         * iltests.il: test for conv.u8 on a constant
22100
22101 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22102
22103         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22104         LCONV_x4 (shrun_32 (membase)).
22105
22106 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22107
22108         * inssel-x86.brg: c&p rules for push/setret of long
22109
22110 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22111
22112         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22113         compare (regvar, base)
22114
22115         * inssel-x86.brg: more burg love
22116
22117         * inssel.brg: more cleanup
22118
22119         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22120
22121 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22122
22123         * basic-long.cs, basic-calls.cs: new tests for optimization.
22124
22125 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22126
22127         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22128         patch.
22129
22130 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22131
22132         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22133         
22134 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22135
22136         * inssel.brg (mini_emit_memcpy): use 
22137         NO_UNALIGNED_ACCESS to disable memcpy optimization
22138
22139 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22140
22141         * mini-amd64.c: Handle generic types in various places.
22142
22143         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22144
22145 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * mini.c (handle_box): Fix warning.
22148
22149         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22150
22151         * mini-amd64.h: Enable the emit_state optimization.
22152
22153         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22154
22155         * mini-amd64.c: Add some new 64 bit peephole opts.
22156
22157         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22158
22159         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22160
22161         * mini-amd64.c: Register allocator fixes.
22162
22163         * mini.c: Add an optimization to emit_state to avoid allocation of new
22164         registers on some platforms.
22165
22166 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22169
22170         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22171         allocation. Fixes #63085.
22172
22173         * basic-long.cs: Add new regression test.
22174
22175         * mini-amd64.c: Register allocator improvements.
22176
22177 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * mini-amd64.c (read_tls_offset_from_method): Add another code
22180         sequence.
22181
22182         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22183         instruction sequence for nullifying class init trampolines.
22184
22185         * objects.cs: Add new regalloc test.
22186
22187         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22188
22189 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22190
22191         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22192         
22193         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22194         arguments.
22195
22196         * driver.c: Fix profiling after TLS changes.
22197         
22198         * driver.c (mono_main): Set mono_stats.enabled if needed.
22199
22200         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22201         CEE_BOX.
22202
22203 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22204
22205         * mini-x86.c: use a 1 op rather than a 2 op tls access
22206         instruction -> faster.
22207
22208 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22209
22210         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22211         x86 backend.
22212
22213 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22214
22215         * exceptions-sparc.c (throw_exception): fix typo
22216
22217 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22218
22219         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22220         set tree->dreg correctly with tls. Allow any
22221         register to be used.
22222
22223         * mini-x86.c (read_tls_offset_from_method): add new code
22224         generation pattern seen with GCC.
22225
22226
22227 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22228
22229         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22230         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22231         exceptions-sparc.c: fix some performance issues in exception
22232         handling and setting of the stack trace for exceptions that were
22233         already thrown.
22234
22235 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22238         x86 backend.
22239         
22240         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22241         registers.
22242
22243 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22244
22245         This patch inlines tls access, when possible.
22246         
22247         * mini.h: new arch functions for TLS intrinsics.
22248         All platforms updated with a stub.
22249
22250         * mini.c: use the new intrinsics
22251
22252         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22253         arch specific intrinsic for tls variables
22254
22255 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22258         under windows.
22259
22260 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22261
22262         * mini.c: thread local allocation
22263
22264 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22265
22266         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22267
22268         * Makefile.am: Link against the static version of libmonogc.
22269         
22270         * Makefile.am: Link the static versions of the convenience libraries
22271         into the mono executable.
22272
22273         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22274
22275 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22278         on integer overflow.
22279
22280         * mini-amd64.c: Reorganize function call code.
22281
22282         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22283
22284 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22285
22286         * inssel-x86.brg: use xor eax,eax.
22287         
22288         * basic.cs: new tests
22289
22290 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22291
22292         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22293         in exception throwing code.
22294         
22295 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22296
22297         * inssel-x86.brg: use xor esi,esi.
22298
22299 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22302         can trace methods compiled during mini_init () too.
22303
22304         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22305         CEE_CONV_U4.
22306
22307 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22308
22309         * Makefile.am: static link on x86 (r=zoltan)
22310
22311 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22312
22313         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22314         code since it causes some programs to fail.
22315
22316 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22319
22320 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22321
22322         * mini.c: ovfops_op_map - add STACK_OBJ case for
22323         CONV_I 
22324         * basic.cs: add test_0_pin_string as test
22325         case for above.
22326
22327 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22328
22329         * Makefile.am: build C# if srcdir != builddir
22330
22331 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22332
22333         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22334         fall-through blocks.
22335
22336 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22337
22338         * driver.c: enable loop by default again and include abcrem in -O=all.
22339
22340 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22341
22342         * iltests.il: Add some localloc tests.
22343
22344         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22345
22346         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22347         Fixes #62574.
22348
22349         * inssel-amd64.brg: Add some optimizations.
22350
22351         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22352         for gcc-3.4.
22353
22354         * Makefile.am: Statically link mono against libmono on AMD64.
22355         
22356         * mini-amd64.c inssel-amd64.brg: Optimizations.
22357
22358 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22359
22360         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22361
22362         * tramp-amd64.c: Patch calling code in trampolines.
22363
22364 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22365
22366         * mini-amd64.c: pinvoke struct passing fixes.
22367
22368 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22369
22370         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22371         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22372
22373 2004-08-05  Duncan Mak  <duncan@ximian.com>
22374
22375         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22376         CEE_LDELEM_ANY.
22377
22378 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22379
22380         * mini-amd64.c (emit_move_return_value): Move return value for normal
22381         calls too.
22382
22383 2004-08-05  Martin Baulig  <martin@ximian.com>
22384
22385         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22386         `type->type'; just modify `type' itself when dealing with enums
22387         and generic instances.
22388         (check_call_signature): Make `simple_type' a `MonoType *'.
22389
22390 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * mini.c: Use OP_PADD to add offsets to addresses.
22393
22394         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22395
22396 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22397
22398         * mini-sparc.c (mono_arch_emit_epilog): fix check
22399         for folding last op into restore instruction
22400
22401 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22404         helper methods using the code manager.
22405         
22406         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22407
22408         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22409
22410 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22411         
22412         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22413           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22414
22415         * mini-s390.c: fix tail processing
22416
22417 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22418
22419         * mini-ppc.c: mul.ovf.un exception name fix.
22420
22421 2004-08-03  Martin Baulig  <martin@ximian.com>
22422
22423         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22424         instances; before jumping to `handle_enum', also modify `ptype'.
22425
22426 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22427
22428         * cpu-sparc.md: fcall maximal length too small.
22429
22430 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * mini-amd64.c mini.h: Add initial support for passing/returning 
22433         structures to/from pinvoked methods.
22434
22435 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22436
22437         * mini-ppc.c: reg allocator fix.
22438
22439 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22440
22441         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22442
22443         * inssel.brg: Optimize memset on 64 bit machines.
22444
22445         * mini-amd64.c: Fix some vararg cases.
22446
22447 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22448
22449         * mini-s390.c: Corrected macro in emit_float_to_int
22450
22451         * s390-abi.cs: Tests to exercise the s390 ABI
22452
22453 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22454
22455         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22456         caller saved regs.
22457
22458         * basic.cs: Add a test for add.ovf.un.
22459
22460 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22461
22462         * mini-sparc.c: add case for OP_IDIV_UN
22463
22464 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22465
22466         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22467         
22468         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22469
22470 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22471
22472         * basic.cs: regression tests.
22473
22474         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22475         regressions.
22476
22477 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22478
22479         * basic.cs: Add a new test.
22480
22481         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22482         and AOT. Various fixes and optimizations.
22483
22484         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22485
22486 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22487
22488         * mini-ppc.c: make sure temp regs are not used for global reg
22489         allocation.
22490
22491 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22492
22493         * cpu-sparc.md: conv_i8 fix for 64bits
22494
22495         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22496
22497 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22498         
22499         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22500         add opcode for cmp BYTE PTR [eax], imm.
22501
22502         * inssel.brg: Make memcpy and memset takes bases.
22503
22504 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22505
22506         * *-amd64.*: More AMD64 work.
22507         
22508 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22509
22510         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22511         add a compare-not-equal opcode.
22512         
22513 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22514
22515         * mini.c: Use mono_init_from_assembly instead of mono_init.
22516         
22517 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22518
22519         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22520
22521         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22522
22523         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22524
22525         * inssel.brg: 64 bit fixes.
22526
22527         * mini.h (MonoCallInst): Add some AMD64 specific data.
22528
22529         * mini.h: Add some OP_P opcodes.
22530
22531 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22532
22533         * basic.cs: tests for 61797 and 61740
22534
22535 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22536
22537         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22538         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22539
22540 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22541
22542         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22543
22544         * *-amd64*.*: Ongoing AMD64 work.
22545
22546 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22547
22548         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22549
22550         * *-amd64*: Ongoing AMD64 work.
22551
22552         * mini-arch.h: Add AMD64 support.
22553
22554         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22555
22556         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22557
22558         * mini-ops.h: Add new opcodes.
22559
22560         * Makefile.am: Add AMD64 support.
22561
22562         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22563         rules into the inssel-long*.brg files.
22564
22565         * *-amd64.*: Add beginnings of AMD64 backend.
22566
22567 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22568
22569         * mini.c (print_dfn): commenting out the code that prints
22570         the cil. With -O=deadce, this makes -v -v crash.
22571         
22572         * cpu-pentium.md: make checkthis have a length of 2
22573
22574 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22575
22576         * mini-sparc.h: fix implementations of __builtin
22577         functions for Sun compiler for V9.
22578
22579 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22580
22581         * mini.c: use the new stelem.ref wrapper
22582         * exceptions.cs, arrays.cs: new stelem.ref tests
22583
22584 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22585
22586         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22587         new XSP should work with these changes).
22588
22589 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22590         
22591         * inssel-{long32,x86,}.brg: trivial optimizations.
22592         
22593 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22594
22595         * mini.c: load value when emitting box operation in
22596         constrained calls.
22597
22598 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22599
22600         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22601         is one byte shorter than cmp DWORD PTR [eax], 0.
22602
22603 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * inssel-ppc.brg: arguments on the stack are always
22606         relative to the stack pointer (spotted by Neale Ferguson).
22607
22608 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22609
22610         * exceptions-x86.c: delay appending the method name to the trace until
22611         after mono_jit_info_table_find is called, as this gets the real
22612         MonoMethod.
22613
22614 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22615
22616         * aot.c: register roots
22617
22618 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22619
22620         * aot.c : I could just use PLATFORM_WIN32 flag.
22621
22622 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22623
22624         * aot.c : Reverting the previous fix. This time it broke linux build.
22625
22626 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22627
22628         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22629
22630 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * mini.c (handle_stack_args): Remove some more debugging code.
22633         
22634         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22635
22636         * driver.c mini.h aot.c: Allow additional options to be specified with
22637         --aot and pass them to mono_compile_assembly.
22638
22639         * aot.c: Add experimental code to AOT compile all loaded assemblies
22640         on demand and save the code into a cache in the filesystem.
22641
22642         * aot.c: Add support for more wrapper methods.
22643         
22644         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22645         58863.
22646
22647         * cpu-*.md: Remove removed opcodes.
22648
22649         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22650         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22651         related icalls to marshal.c.
22652
22653 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22654
22655         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22656
22657         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22658
22659         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22660
22661 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22662         * liveness.c: If liveness is recomputated we need to reset the information
22663         for each variable. This way, if the liveness range has been narrowed
22664         by optimizations that happened after the last computation, we can return
22665         a smaller range.
22666         
22667         For example, if you have
22668         
22669         {
22670                 int i = 0;
22671                 
22672                 // Tons of code that does not affect i
22673                 
22674                 i = foo ();
22675                 ...
22676         }
22677         
22678         i = 0 is dead code and will be removed by SSA. However, when
22679         linear scan gets to the code, i will still appear to be live
22680         throughout the entire block. This prevents good register allocation.
22681
22682 2004-07-06  Martin Baulig  <martin@ximian.com>
22683
22684         * debug-mini.c (mono_debug_init_method): Allow
22685         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22686         (mono_debug_add_icall_wrapper): New method.
22687
22688         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22689
22690 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22691
22692         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22693         optimization.
22694
22695 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22696
22697         * aot.c (mono_aot_load_method): Fix loading of debug info.
22698
22699 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * aot.c: Add logging support.
22702
22703 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22704
22705         * mini.h: Add prototype for mono_print_method_from_ip.
22706
22707         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22708
22709         * inssel.brg: 64 bit fixes.
22710
22711         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22712         inssel-long32.brg.
22713
22714         * Makefile.am: Add SPARC64 support.
22715
22716 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22717
22718         * aot.c: Fix alignment problems on 32 bit platforms.
22719
22720 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22721
22722         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22723         SPARC64.
22724
22725         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22726         problems.
22727
22728         * mini.h: Bump AOT file version. Some 64 bit fixes.
22729
22730 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22731
22732         * inssel-sparc.brg: Add new rule to avoid register moves.
22733
22734         * inssel.brg: Add ldind_to_load_membase helper function.
22735
22736 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22737
22738         * mini.c: OffsetToStringData intrinsic.
22739         
22740 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22741
22742         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22743
22744         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22745         regression tests.
22746
22747         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22748 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22749
22750         * mini.c: reinstated mono_compile_get_interface_var()
22751         on x86, too, since the change breaks the Gtk# build there as well.
22752
22753 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22754
22755         * driver.c: remove loop from the default optimizations: it seems to
22756         interact badly with some of the other options (see bug #60613).
22757
22758 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22759
22760         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22761         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22762
22763 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22764
22765         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22766         vararg-using methods.
22767
22768 2004-06-21  Martin Baulig  <martin@ximian.com>
22769
22770         * mini/mini-exceptions.c
22771         (mono_handle_exception): Added `gpointer original_ip' argument.
22772         After calling mono_unhandled_exception(), call
22773         mono_debugger_unhandled_exception() and if that returns true,
22774         restore the context and return.
22775
22776 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22777
22778         * mini-ppc.c: prefer the use of relative branches so
22779         they won't need to be patched in aot code (patch from Patrick Beard).
22780
22781 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22782
22783         * aot.c: patch from Patrick Beard to make the output assembly
22784         more correct for the MacOSX assembler. Small tweak to
22785         generate sane images on Linux/PPC, too.
22786
22787 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22788
22789         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22790         case until bug #59509 is fixed (shows up in #60332).
22791
22792 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22793
22794         * mini.c: make sure the needed wrappers are compiled, too, with
22795         precomp.
22796
22797 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22798
22799         * driver.c: remove NPTL reference in --version output.
22800
22801 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22802
22803         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22804         generate valid assembly for the Mach-O assembler.
22805
22806 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22807
22808         * driver.c: don't include abcrem in the all optimization specifier
22809         since it slows down jit compilation too much for now.
22810
22811 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22812
22813         * mini.c: use BIGMUL only if both operands have the same signage.
22814         * iltests.il: Test for bug 60056. (errors related to signage in
22815         BIGMUL).
22816
22817         r=lupus.
22818
22819 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22820
22821         * mini.c, aot.c: memory leak fixes.
22822
22823 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22824
22825         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22826
22827 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22828
22829         * Makefile.am: remove the -static hack completely, it links in
22830         statically glib as well.
22831
22832 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22833
22834         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22835         * exceptions.cs: make it compile with new mcs/csc.
22836
22837 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22838         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22839         and added relevant test case.
22840
22841 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22842
22843         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22844         regressions in gtk-sharp.
22845
22846 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * exceptions.cs: New regression tests.
22849
22850         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22851
22852 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22853
22854         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22855
22856 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22857
22858         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22859
22860         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22861
22862 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22863
22864         * mini.c (mono_jit_runtime_invoke): Init class in this
22865         method instead of trusting mono_jit_compile_method to
22866         do the work (because wrappers can be in object class)
22867
22868 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22871
22872         * basic-long.cs: New regression test.
22873
22874 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22875
22876         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22877         and div/rem checks.
22878
22879 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22880
22881         * Makefile.am: fix miguel's change to build mono statically against
22882         libmono (track build dependencies).
22883
22884 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22885
22886         * cfold.c: Some glib versions do not have G_MININT32.
22887
22888 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22889
22890         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22891         with precision of tan, atan, sin and cos, and implemented related
22892         regressions tests (fixes bug 54467, but one new problem appeared and
22893         is not fixed yet).
22894
22895 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22896
22897         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22898
22899         * exceptions.cs: Add test for constant folding && division by zero.
22900
22901         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22902         since driver.c is in libmono too, so the optimization was useless.
22903
22904         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22905         variable to driver.c so the compiler can emit more efficient code to
22906         access them.
22907
22908 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22909
22910         * Makefile.am: don't distribute generated inssel.[ch] files.
22911
22912 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22913
22914         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22915         into the default appdomain. Fixes #58707.
22916
22917         * jit-icalls.c: Remove the broken approximation for truncl, doing
22918         no conversion is better.
22919
22920         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22921         Fixes #58863.
22922
22923 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22924
22925         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22926         of the mcrxr instruction which is not available on some processors
22927         even if it's documented to be. Implement add and sub overflow correctly
22928         (still not complete for long unsigned). Speed up icalls a bit.
22929
22930 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22931
22932         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22933         we run .cctor in the current domain instead of target_domain.
22934         
22935         Fixes bug #58558, .cctor not being called in -O=shared.
22936
22937 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22938
22939         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22940
22941 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22942
22943         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22944         which can be done with an imm8, do it that way.
22945         (mono_arch_output_basic_block): ditto for a jmp
22946         (mono_arch_emit_prolog): Computate maximum offset of a label.
22947
22948 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22949
22950         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22951         now tries to allocate prefered physical reg's for virtual
22952         regs. This reduces the number of emited spills/loads with
22953         20-30% on our core assemblies.
22954
22955 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22956
22957         * jit-icalls.c: truncl() is not needed and trunc() is
22958         the correct thing to do anyway (bug #58287).
22959
22960 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22961
22962         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22963         if available.
22964
22965 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22966
22967         * driver.c: enable loop optimizations by default.
22968
22969 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22970
22971         * mini-x86.c: fix calc of max loop size when aligning loops start.
22972
22973 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22976         the stack.
22977
22978 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22979
22980         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22981         should set carry.
22982
22983         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22984
22985         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22986         
22987         * mini.c (inline_method): Allways inline some wrappers even if the cost
22988         is too large. Fixes #58785.
22989
22990         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22991         
22992 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22995         (crichton@gimp.org). Beginning of support for sparc/linux.
22996
22997         * mini-sparc.c: Optimize retrieval of LMF address.
22998
22999 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
23000
23001         * exceptions-ppc.c:  handle alloca in methods with clauses.
23002
23003 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
23004
23005         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
23006
23007 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
23008
23009         * mini.c: Delegate most of the abort signal work to 
23010           mono_thread_request_interruption, which also handles Stop and Suspend
23011           states.
23012
23013 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
23016         supports the save/restore lmf opcodes.
23017
23018 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
23019
23020         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
23021         by gcc-3.4 as well.
23022
23023         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
23024
23025 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
23028         methods which contain array accesses.
23029
23030         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
23031         boundaries. Fixes #58537.
23032
23033         * iltests.il: Add regression test for #58537.
23034
23035 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23036
23037         * mini-x86.c (mono_arch_local_regalloc): Last part of
23038         fix for bug #58633 (releasing register to early).
23039
23040 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
23041
23042         * basic-long.cs: Add new regression test.
23043
23044 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
23045
23046         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
23047         register too early on the chain.
23048
23049 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
23050
23051         * mini.c (create_helper_signature): Use a helper function to reduce
23052         the code which needs to be written. Also set the calling convention of
23053         icalls on windows. Fixes #57840.
23054
23055 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23056
23057         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23058         exceptions-ppc.c: added helper function to get the instruction address
23059         from a signal handler context.
23060
23061 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23062
23063         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23064         from gonzalo.
23065
23066 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23067
23068         * helpers.c: Add new env variable to pass args to objdump.
23069         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23070
23071 2004-05-17  Radek Doulik  <rodo@ximian.com>
23072
23073         * Makefile.am (common_sources): added abcremoval.h so it get
23074         disted and daily mono packages on go-mono.com will build again
23075
23076 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23077
23078         * abcremoval.c: Fixed coding style, added copyright header.
23079
23080         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23081
23082         * mini.h: Added prototype for abc removal main function.
23083
23084         * build_relations_propagation_table.pl: Added copyright header.
23085
23086 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23087
23088         * basic-long.cs: reg test for complex ceq_long bug.
23089
23090 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23091
23092         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23093         reg in long and clob case (bug #58343). Fixed/added comments.
23094
23095 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23096
23097         * mini.c (mono_jit_runtime_invoke): Follow new convention
23098         of calling the invoke method with an function pointer.
23099
23100 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23101
23102         * ChangeLog: Fix author of memory leak patch.
23103
23104 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23105
23106         * Makefile.am: fix make dist as well...
23107
23108
23109 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23110
23111         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23112         on archs where pointers are 4 bytes long.
23113
23114         * Makefile.am: Added abcremoval.c source file.
23115
23116         * abcremoval.c: Added abcremoval.c.
23117
23118         * abcremoval.h: Added abcremoval.h.
23119
23120         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23121
23122         * inssel.brg: Enabled bounds check removal.
23123
23124         * mini.c: Added support for abcrem optimization.
23125
23126         * mini.h: Added abcrem optimization label.
23127
23128         * driver.c: Added support for abcrem optimization.
23129
23130         * propagated_relations_table.def: Added propagated_relations_table.def.
23131
23132 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23133
23134         * mini.c, cfold.c: fix style.
23135
23136 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23137
23138         * mini.c: handle issue with the low-level implementation of
23139         some long opcodes (bug #54209).
23140
23141 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23142
23143         * basic.cs: test for my new cmov stuff.
23144
23145 2004-05-13      Patrik Torstensson
23146
23147         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23148         opt and added peephole documentation.
23149
23150 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23151
23152         * tramp-ppc.c: rewrote the generic trampoline code.
23153
23154 2004-05-11      Patrik Torstensson
23155
23156         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23157
23158 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23159
23160         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23161
23162         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23163         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23164
23165         * mini.c: Add new icalls for AsAny marshalling.
23166
23167 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23168
23169         * tramp-ppc.c, mini-ppc.c: more cleanups.
23170
23171 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23172
23173         * mini.c: no warnings.
23174
23175 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23176
23177         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23178
23179 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23180
23181         * mini.c: In the thread abort signal handler, if the thread is in the
23182         process of being stoped, don't throw the Abort exception, just stop the
23183         thread.
23184
23185 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23186
23187         * tramp-ppc.c: removed old code.
23188
23189 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23190
23191         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23192         do some simple speed optimizations on ppc.
23193
23194 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23195
23196         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23197         and large offsets in load/store.
23198
23199 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23200
23201         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23202         it causes regressions.
23203
23204 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23205
23206         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23207         support.
23208
23209 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23210
23211         * jit-icalls.c: remove warnings.
23212         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23213         speedups for unsafe code.
23214
23215 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23216
23217         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23218
23219 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * basic-calls.cs: Add new regression test.
23222
23223         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23224         more portable.
23225
23226         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23227
23228         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23229         is no longer used.
23230
23231 2004-05-06      Patrik Torstensson
23232
23233         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23234         long reg allocation in any reg (not only eax:edx) and implemented 
23235         long shl/shr ops in asm instead of helpers.
23236
23237 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23238
23239         * mini-sparc.h: Fix warnings.
23240
23241         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23242         stack.
23243
23244         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23245         separate statement for clarity.
23246
23247         * mini-sparc.c: Update status.
23248
23249 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23250
23251         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23252         here.
23253
23254 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23255
23256         * inssel-ppc.brg: another small pre-release workaround:
23257         we don't do overflow detection for long_sub_un.
23258
23259 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23260
23261         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23262         (also works around a weird ppc bug: 57957).
23263
23264 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23265
23266         * tramp-ppc.c: trampoline fixes.
23267
23268 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23269
23270         * mini-ppc.c: fixed typos.
23271
23272 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23273
23274         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23275         at the top of the stack. Fixed typos. Use a frame registers
23276         for all the methods with exception clauses.
23277
23278 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23279
23280         * exceptions-ppc.c: restore fp registers.
23281
23282 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23283
23284         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23285         order from the stack top (moved the stack room to save the
23286         return value for trace after the param area). Fixed corruption
23287         in restoring registers on unwind.
23288
23289 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23290
23291         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23292
23293 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23294
23295         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23296         and prolog/epilog for methods that use it. Allow
23297         enough param area room for varargs methods. Fix miguel's
23298         breakage in exception handling.
23299
23300 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23301
23302         * Makefile.am: run genmdesc only on current arch.
23303
23304 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23305
23306         * exceptions-x86.c:
23307         * mini-x86.h: fix the build on windows.
23308
23309 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23310
23311         * 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.
23312
23313         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23314
23315         * mini-exceptions.c: New file.
23316         
23317         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23318         Move some parts of the x86 exception handling code to an 
23319         arch-independent file so it can be shared with other ports.
23320
23321 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23322
23323         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23324
23325 2004-04-26  David Waite  <mass@akuma.org>
23326
23327         * driver.c: remove comma from end of enumeration declaration
23328
23329 2004-04-26  Jackson Harper  <jackson@ximian.com>
23330
23331         * driver.c: parse config file before loading first assembly. This
23332         allows the user gac to be enabled/disabled. 
23333         
23334 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23335
23336         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23337         simpler mechanism: we do not care what is encoded initially
23338         (branch absolute or relative), we care about the code and its
23339         target.  I kept the old code for reference for now.
23340
23341         The new code tries first to determine if the jump is anywhere in
23342         the -/+32 absolute meg range, if it succeeds, it encodes using the
23343         absolute branch;  If not, it tried to find something in the
23344         relative range, if not, it uses the handle_thunk code. 
23345
23346 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23347
23348         * exceptions-ppc.c: use the correct ip register on macosx.
23349
23350 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23351
23352         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23353
23354 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23355
23356         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23357         Raise exception on integer divide by zero by hand since the hw
23358         doesn't support it. Handle NaNs in FP compares.
23359
23360 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23361
23362         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23363         code reducing duplication between the platforms and enabled
23364         signal exception handling (on linux for now).
23365
23366 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23367
23368         * exceptions-ppc.c: more macosx support.
23369
23370 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23371
23372         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23373
23374 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23375
23376         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23377
23378 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23379
23380         * iltests.il: more tests.
23381
23382 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23383
23384         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23385         vars as well.
23386
23387 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23388
23389         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23390
23391 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23392
23393         * liveness.c: Mark variables as volatile in all basic blocks reachable
23394         from exception clauses.
23395
23396 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23399         inlining.
23400
23401 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23402
23403         * iltests.il, basic.cs: more tests for regalloc.
23404
23405 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23406
23407         * iltests.il: Some tests for register allocation modifications
23408         I have locally.
23409
23410 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23411
23412         * exceptions.cs: Add regression test for bug #56782.
23413
23414         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23415         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23416         the beauty of fixing the same thing in 5 different files...
23417
23418 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23421         methods.
23422
23423 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23424
23425         * mini.c: Add support for STRWLPARRAY marshalling convention.
23426
23427 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23428
23429         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23430         to init the context to setup the regs pointer).
23431
23432 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23433
23434         * exceptions-ppc.c: more exceptions work.
23435
23436 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23437
23438         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23439         not allowed.
23440
23441 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23442
23443         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23444         can use the memory directly.
23445
23446         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23447
23448         add x86_add_membase, x86_sub_membase, x86_mul_membase
23449
23450 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23451
23452         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23453         GENERAL_REGS they were also hardcoded for all PPC ports.
23454
23455         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23456
23457         Remove hard-coded limit for floating point registers, use
23458         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23459
23460         Notice that in MacOS X calling conventions you can fit a lot more
23461         floating point values in registers, so I should update the PInvoke
23462         test to excercise the passing of floating point values on the
23463         stack (currently broken).
23464         
23465 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23466
23467         * tramp-ppc.c (create_trampoline_code): Added
23468         JUMP_TRAMPOLINE_SIZE. 
23469         (ppc_magic_trampoline): Follow the pattern from
23470         x86_magic_trampoline: if code is set to zero, return. 
23471         (create_trampoline_code): Always pass MonoMethod to the jump
23472         trampoline, before it was passing a null.
23473         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23474         share the code with mono_arch_create_jit_trampoline. 
23475
23476         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23477         implemented.
23478         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23479         implemented.  
23480
23481         * cpu-g4.md: Added length for jmp instruction, the worst case
23482         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23483         for save_lmf).
23484
23485 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23486
23487         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23488
23489 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23490
23491         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23492         before each IL instruction.
23493
23494         * mini.c (CEE_BOX): Fix warnings.
23495
23496 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23497
23498         * mini.c: removed a few unused vars and extra whitespace.
23499
23500 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23501
23502         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23503         checks.
23504         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23505         index.
23506         (OP_GETCHR): use the above
23507         (CEE_LDELEMA): use the above.
23508
23509         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23510         version of the generic impl.
23511         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23512         (CEE_LDELEMA): use the above.
23513
23514 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23515
23516         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23517         Fixes #56317.
23518
23519         * iltests.il: Added new regression test for #56317.
23520
23521 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23522
23523         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23524         under NetBSD. Fixes #56450.
23525
23526         * liveness.c (update_gen_kill_set): Fix previous patch.
23527
23528 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23529
23530         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23531
23532 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23533
23534         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23535         ldsfld and ldsflda.
23536
23537         * inssel-sparc.brg: Add more optimizations.
23538
23539         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23540
23541 2004-04-01  Martin Baulig  <martin@ximian.com>
23542
23543         * mini.c (handle_box): New static function; moved the
23544         implementation of CEE_BOX here.
23545         (mono_method_to_ir): Added `constrained_call' variable.
23546         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23547         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23548         mono_method_get_constrained() to get the method.
23549
23550 2004-04-01  Martin Baulig  <martin@ximian.com>
23551
23552         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23553         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23554         (mono_method_to_ir): We don't need these macros anymore since
23555         mono_class_get_full() already takes care of it. 
23556
23557 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23558
23559         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23560         use @function (as doesn't accept #function here) and check the return
23561         value of system and stop if fails.
23562
23563 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23564
23565         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23566
23567 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23568
23569         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23570
23571         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23572
23573         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23574         #56223.
23575
23576         * basic-long.cs: Add test for negation of Int64.MinValue.
23577
23578 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * mini-sparc.c: Update status.
23581
23582         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23583
23584         * exceptions-sparc.c: Fix return value in filters.
23585
23586         * inssel-sparc.brg: Fix register allocation in some rules.
23587
23588 2004-03-28  Martin Baulig  <martin@ximian.com>
23589
23590         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23591         if neccessary.  
23592
23593 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23594
23595         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23596         
23597         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23598         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23599         remove unused conv_u4 opcode.
23600
23601         * mini-x86.c: Remove valgrind workaround since it slows down things
23602         even when mono is not run under valgrind.
23603
23604 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23605
23606         * mini-sparc.c: Update status.
23607
23608         * inssel-sparc.brg: Add some optimizations.
23609
23610         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23611         future delay slot filling. Add support for varargs, tail calls and JMP.
23612
23613         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23614         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23615
23616         * inssel.brg: Fix register allocation in OP_ARGLIST.
23617
23618         * inssel.brg: Fix warnings.
23619
23620 2004-03-25  Martin Baulig  <martin@ximian.com>
23621
23622         * mini.c (inflate_generic_field): Removed.
23623         (mini_get_method): Removed, use mono_get_method_full(),
23624         (mini_get_class): Removed, use mono_class_get_full().
23625         (mono_method_to_ir): Pass our generic context to
23626         mono_field_from_token().        
23627
23628 2004-03-25  Martin Baulig  <martin@ximian.com>
23629
23630         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23631         of a `MonoMethod *'.
23632         (mini_get_method): Take a `MonoGenericContext *' instead
23633         of a `MonoMethod *'.
23634         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23635         a new local variable called `generic_context' which holds the
23636         current `MonoGenericContext *'; use it to lookup things.
23637
23638 2004-03-24  Martin Baulig  <martin@ximian.com>
23639
23640         * mini.c (mini_get_class): New static method; if we're inside a
23641         generic instance, inflate the class if neccessary.
23642         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23643
23644 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23645
23646         * iltests.il: New regression test for #55976.
23647
23648         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23649         #55976.
23650
23651 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23654         output.
23655
23656 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23657
23658         * liveness.c: Consider SSA stores as well as loads when making vars
23659         volatile.
23660
23661         * exceptions.cs: New regression tests for register allocation.
23662         
23663 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23664
23665         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23666         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23667           domain lock only to protect puntual access to data structures.
23668           Added access lock for sighash, jit_icall_hash_name, 
23669           jit_icall_hash_addr and domain->code_mp.
23670
23671 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23672
23673         * driver.c: Print SIGSEGV handling method.
23674
23675         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23676
23677         * mini.c (setup_jit_tls_data): Handle case when this is called
23678         multiple times for a thread.
23679
23680         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23681         is different from fbxx_un. Fixes #54303. Also use constants instead of
23682         magic numbers in a lot of places.
23683
23684 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23685
23686         * exceptions.cs: Fix cctor test when --regression is used.
23687
23688 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23689
23690         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23691         for Linux/ppc.
23692
23693 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23694
23695         * inssel-ppc.brg: fixed register assignments for some rules.
23696
23697 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23698
23699         * exceptions.cs: Add test for exceptions in static constructors.
23700
23701         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23702         static constructors outside the domain lock. Fixes #55720.
23703
23704 2004-03-17  Martin Baulig  <martin@ximian.com>
23705
23706         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23707         (inflate_generic_field): Take the `MonoMethod *' instead of the
23708         `MonoClass *' and added support for generic method.
23709         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23710         have a `field->parent->gen_params', only inflate the field if it's
23711         an open constructed type.
23712
23713 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23714
23715         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23716         exception object instead of the preconstructed ones.
23717
23718 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23719
23720         * mini.c: reverted changed to sigsegv_signal_handler commited
23721         accidentally in the previous patch.
23722
23723 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23724
23725         * mini.c:
23726         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23727         running --aot with an old assembly.
23728
23729 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23732         point values.
23733
23734         * mini-sparc.c: Add support for v9 branches with prediction.
23735
23736 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23737
23738         * mini.c (mini_init): #warning is GNUC only
23739
23740         * mini-sparc.h: implement __builtin_frame_address
23741         and __builtin_return_address for Sun C compiler
23742
23743 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23744
23745         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23746
23747 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23748
23749         * basic-calls.cs: Add test for unaligned byref long argument passing.
23750
23751         * mini-ops.h: Add sparcv9 compare and branch instructions.
23752
23753         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23754         v9 instructions if we have a v9 cpu.
23755
23756         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23757         registers for global allocation.
23758
23759         * exceptions-sparc.c: Fixes.
23760         
23761 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * liveness.c (mono_analyze_liveness): Optimized version.
23764
23765         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23766
23767         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23768         sparc work.
23769
23770         * basic-float.cs basic-calls.cs: New regression tests.
23771
23772 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23775         sigaltstack implementation.
23776
23777         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23778         
23779         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23780         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23781
23782 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23783
23784         * mini.c: Fix warnings.
23785         
23786         * mini.c (mono_resolve_patch_target): New function which contains the
23787         arch independent part of the patching process.
23788
23789         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23790         patching code to a separate function.
23791
23792 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23793
23794         * mini.c (add_signal_handler): ifdef out on Windows
23795
23796 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23797
23798         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23799         cpu-sparc.md: Add exception handling support + other fixes.
23800
23801         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23802         typed GC detection in --version.
23803
23804         * basic.cs exceptions.cs: New regression tests.
23805
23806         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23807         the arch specific code can store data during a compilation.
23808
23809         * mini-ops.h: Add OP_SETFRET.
23810
23811         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23812         function, register a separate icall for each arity, so the icalls can
23813         get a wrapper.
23814         
23815         * mini.c (mono_print_tree): Print negative offsets in a more readable
23816         form.
23817         
23818         * mini.c: Make signal handling work on sparc.
23819         
23820         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23821
23822         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23823
23824         * jit-icalls.c: Emulate truncl by aintl on solaris.
23825
23826         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23827
23828 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23829
23830         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23831
23832 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23833
23834         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23835         a MarshalByRef type, inline a method that performs the check, taking into
23836         account that the object can be a proxy. Also implemented tow new opcodes:
23837         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23838         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23839         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23840
23841 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23842
23843         * mini-ppc.c: if a relative branch displacement is too big
23844         but it points to and area reachable with an absolute branch, 
23845         avoid the thunks.
23846
23847 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23848
23849         * mini.c: optimize small copies in cpblk.
23850
23851 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23852
23853         * basic-calls.cs basic-float.cs: New regression tests.
23854
23855         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23856         negative offsets from %fp. Implement localloc. Fix local register 
23857         allocation. Fix the case when the this argument needs to be saved to
23858         the stack. Implement some missing opcodes.
23859
23860 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23861
23862         * mini.c (mini_method_compile): Reenable global regalloc in methods
23863         with exception handlers.
23864
23865         * linear-scan.c (mono_varlist_sort): Fix warning.
23866
23867         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23868
23869         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23870         regalloc costs.
23871
23872         * liveness.c: Make all variables uses in exception clauses volatile, to
23873         prevent them from being allocated to registers. Fixes #42136.
23874
23875 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23876
23877         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23878         causes regressions.
23879
23880         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23881         argument to mono_arch_regalloc_cost.
23882
23883         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23884         precisely.
23885
23886 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23889         Make the cost of allocating a variable to a register arch dependent.
23890
23891         * basic-calls.cs: Fix compilation of tests.
23892         
23893         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23894         helper function to cut back on the number of #ifdefs needed.
23895
23896         * mini-ppc.c: Fix compilation.
23897
23898         * basic-calls.cs: New regression tests.
23899
23900         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23901
23902         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23903         of l0 since that is callee saved.
23904
23905         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23906         to virtual calls.
23907
23908         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23909         of delay instruction.
23910
23911         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23912
23913         * mini.h (MonoCallInst): Add 'virtual' flag.
23914
23915         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23916
23917 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23918
23919         * *.cs: New regression tests.
23920
23921         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23922         work.
23923
23924         * mini.c (mono_runtime_install_handlers): Fix build.
23925
23926         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23927         'signal_stack_size' members.
23928
23929         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23930         alternate signal stack.
23931
23932         * exceptions-x86.c: Add stack overflow handling.
23933
23934         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23935         functions to arch independent code.
23936
23937         * mini.c (mono_print_tree): Print more detailed info for load_membase
23938         opcodes.
23939         
23940 2004-02-23  Martin Baulig  <martin@ximian.com>
23941
23942         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23943
23944 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23945
23946         * mini-x86.c: fixed reg allocation for div/rem.
23947
23948 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23949
23950         * driver.c (mono_main): Report some configuratio options on --version.
23951
23952 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23953
23954         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23955         low in the address space. Correctly flush memory in thunks where we
23956         output native code.
23957
23958 2004-02-20  Martin Baulig  <martin@ximian.com>
23959
23960         * mini.c (mini_get_method): New static method; inflate all generic
23961         methods and methods in open generic instances.
23962         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23963         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23964
23965 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23968
23969         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23970
23971 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23972
23973         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23974
23975         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23976         it compile using Sun's compiler.
23977
23978 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23979
23980         * 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.
23981
23982         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23983
23984 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23985
23986         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23987         code.
23988         * mini-ppc.c: handle calls outside of the allowed range with thunks
23989         allocated using the code manager.
23990         * tramp-ppc.c: use the code manager to hold generated native code.
23991         Fixed the magic trampoline to just patch vtable entries.
23992
23993 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23996         independent file.
23997
23998 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23999
24000         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
24001         PPC.
24002
24003         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
24004         if we have a working __thread implementation.
24005
24006         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
24007         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
24008
24009 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
24010
24011         * mini-x86.c: Fix compilation under gcc 2.
24012         
24013 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24014
24015         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
24016         contains a call to the wrapped function.
24017
24018         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
24019         OP_<CALL>_IMM opcodes, and use them under X86.
24020         
24021         * mini.c (mono_jit_find_compiled_method): Fix warning.
24022
24023         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
24024
24025         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
24026
24027         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
24028         functionality to mini.c.
24029
24030         * mini.c (mono_create_jump_trampoline): New function to create a jump
24031         trampoline. Return a compiled method instead of a trampoline if it
24032         exists. Add a cache for jump trampolines.
24033
24034         * mini.c (mono_jit_find_compiled_method): New function to return a
24035         compiled method if it exists.
24036
24037         * mini-x86.c: Call mono_create_jump_trampoline instead of 
24038         mono_arch_create_jit_trampoline.
24039
24040         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
24041         a jump trampoline. Fixes #52092.
24042         
24043 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24044
24045         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
24046         which is not up-to-date. Add check_corlib_version () instead.
24047
24048         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
24049         have to call it.
24050         
24051         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
24052         since newer valgrind versions do not need it.
24053
24054         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24055         compile a method with a given set of optimizations.
24056
24057         * mini.c: Compile icall wrappers on-demand instead of at startup.
24058
24059         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24060         wrapper for an icall.
24061
24062 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24063
24064         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24065         #54063.
24066
24067         * iltests.il: Add test for non-empty stack before switch instruction.
24068
24069 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24070
24071         * mini.c: Add support for new stringbuilder marshalling conventions.
24072
24073         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24074
24075 2004-02-01  Martin Baulig  <martin@ximian.com>
24076
24077         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24078         in `ginst->mtype_argv'.
24079
24080 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24081
24082         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24083         facilitate grepping.
24084
24085 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24086
24087         * mini.c: fixed buglet in initobj generic implementation for references.
24088
24089 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24090
24091         * Makefile.am: make the version script conditional.
24092         * jit-icalls.c: handle missing truncl().
24093
24094 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24095
24096         * exceptions.cs: Add more tests for double->int conversion.
24097
24098         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24099         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24100
24101 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24102
24103         * driver.c: make --verbose --version emit an error
24104         if the loaded corlib doesn't match the runtime version.
24105
24106 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24107
24108         * mini-ppc.h: export ppc_patch().
24109         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24110         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24111         on par or better than on MacOSX.
24112
24113 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24114
24115         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24116         mono_lookup_pinvoke_call.
24117
24118         * mini-x86.c: Under windows, the default pinvoke calling convention is
24119         stdcall. Fixes #52834.
24120
24121         * mini.c (optimize_branches): Add an upper bound to the number of
24122         iterations to prevent infinite loops on strange loops. Fixes #53003.
24123
24124 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24127         and ISINST. Fixes #52093.
24128
24129         * objects.cs (test_0_vector_array_cast): New tests.
24130         
24131 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24134         checking in Array.Set ().
24135
24136         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24137         #52590.
24138
24139         * object.cs (test_0_multi_array_cast): New regression test.
24140
24141 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24142
24143         * exceptions-ppc.c: fix build on Linux/PPC.
24144
24145 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24146
24147         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24148         running under valgrind.
24149         (x86_magic_trampoline): Fix build bustage.
24150
24151         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24152         negative values as well. This is needed for the encoding of the line number
24153         info, since sometimes the line numbers are not in increasing order.
24154
24155 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * cpu-pentium.md (localloc): Increase the size of the localloc 
24158         instruction since it is a loop under Win32.
24159
24160         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24161         allocation.
24162
24163 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24166         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24167         Max Horn (max@quendi.de). Fix file names in comments.
24168
24169 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24172         avoid stack overflow.
24173         (replace_usage): Avoid uninitialized variable warnings.
24174
24175         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24176         and taking the address of valuetype variables.
24177
24178 2004-01-03  Patrik Torstensson
24179
24180         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24181         for other purposes than FP later on.
24182
24183 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24184
24185         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24186         of tail calls.
24187
24188 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24189
24190         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24191
24192 2003-12-30  Patrik Torstensson <p@rxc.se>
24193
24194         * mini-x86.h: Decreased number of availiable fp regs.
24195         Solves corner cases with FP spilling.
24196
24197 2003-12-23  Patrik Torstensson <p@rxc.se>
24198
24199         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24200         for floating point stack tracking / spilling on x86. 
24201         Fixes bug #49012.
24202         
24203         * basic-float.cs: added float mul overflow test.
24204
24205 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24208
24209 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24210
24211         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24212         supports for cond branches that overflow the immediate
24213         overflow offset. mcs can compile simple programs.
24214
24215 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24216
24217         * exceptions-ppc.c: exception handling support wip:
24218         finally handlers get run on exception.
24219
24220 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24221
24222         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24223         profiling.
24224
24225 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24226
24227         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24228         initial support for stack walking and unwinding.
24229
24230 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24231
24232         * driver.c (mono_main): Make corlib-out-of-sync message more 
24233         descriptive. Also remove verify_corlib call.
24234
24235 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24236
24237         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24238         not overlap with other call's arguments, too.
24239
24240 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24241
24242         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24243         move to arch-specific code the choice of arch-specific
24244         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24245         * mini.c: ensure emulation calls will not interleave
24246         with other calls.
24247
24248 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24249
24250         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24251         the magic trampoline stack frame is dropped before executing
24252         the new method.
24253
24254 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24255
24256         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24257         and integer to fp conversions. Added support for overflowing
24258         arguments on the stack. Reserve a couple more registers as temps.
24259         Added support for aot compilation (as output still needs to be
24260         tweaked, though).
24261
24262 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24263
24264         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24265         Don't overwrite return register in some corner cases.
24266
24267 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24268
24269         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24270         static constructors when AOT compiling.
24271
24272         * driver.c (mono_main): Call mono_check_corlib_version.
24273
24274 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24275
24276         * cpu-g4.md, basic.cs: fixed div target register.
24277
24278 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24279
24280         * mini-ppc.c, basic.cs: shl_imm fix with test.
24281
24282 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24283
24284         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24285         structures by value. Misc fixes.
24286         * objects.cs: more tests.
24287
24288 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24289
24290         * mini-ppc.c: lconv.ovf.i implemented.
24291
24292 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24293
24294         * mini.c:
24295         (mini_init): don't error out if someone already called g_thread_init.
24296
24297 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24298
24299         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24300         to be any type per the spec. Fix abnormal memory usage when
24301         the same object is repeatedly thrown.
24302
24303 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24304
24305         * mini.c: check for overruns in IL code.
24306
24307 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24308
24309         * TODO: Add/remove some todo entries.
24310
24311 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24312
24313         * driver.c (mono_main): Call mono_verify_corlib.
24314
24315 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24316
24317         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24318         This has been moved to mini.c
24319         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24320         type being casted is marshalbyref it could be a proxy, so instead of
24321         emitting the type check code, emit a call to a runtime method that will
24322         perform the check by calling CanCastTo if needed.
24323
24324 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24327         methods with large stack frames under Win32.
24328
24329 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24330
24331         * Makefile.am: Distribute regression tests.
24332
24333         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24334         at the end instead of inserting each variable into the sorted list.
24335
24336         * linear-scan.c (mono_varlist_sort): New helper function.
24337         
24338 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24339
24340         * mini.c: ensure arguments and locals are within bounds.
24341
24342 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24343
24344         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24345         related fixes.
24346
24347 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24348
24349         * mini.c (mono_cprop_copy_values): Fix crash.
24350
24351         * aot.c: Set verbosity back to 0.
24352         
24353 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24354
24355         * regalloc.c: complete memory leak fix by Laurent Morichetti
24356         (l_m@pacbell.net).
24357
24358 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24359
24360         * driver.c (main_thread_handler): Revert the previous patch.
24361
24362         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24363         under valgrind.
24364
24365         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24366         memory from the memory pool.
24367
24368         * driver.c (main_thread_handler): Turn on all optimizations when
24369         --aot is used.
24370
24371         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24372         an array for better performance.
24373
24374         * regalloc.c (mono_regstate_assign): Fix memory leak.
24375
24376         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24377         serialize the debug info.
24378
24379         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24380         debug info from the serialized representation.
24381
24382         * aot.c: Save debug info into the generated file and load it when 
24383         loading a method.
24384
24385         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24386
24387 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24388
24389         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24390         More FP-related fixes.
24391
24392 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24393
24394         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24395         and register allocation buglet. Hello world now runs.
24396
24397 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24398
24399         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24400         * tramp-ppc.c: fixed class init trampoline.
24401         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24402
24403 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24404
24405         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24406         mini.c: more ppc changes/fixes.
24407
24408 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24409
24410         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24411         Also optimize the case when the arguments are the same in the caller 
24412         and in the callee.
24413
24414         * iltests.il: Add tests for tail calls with valuetype arguments.
24415
24416 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24417
24418         * mini-ppc.c: fixes for struct return type.
24419
24420 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24421
24422         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24423         mono_spillvar_offset() to arch-specific code.
24424
24425 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24426
24427         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24428
24429 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24430
24431         * exceptions-x86.c: Fix stack space leaks.
24432         
24433         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24434         registers from the lmf if the method has save_lmf set.
24435
24436 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24437
24438         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24439         of icall wrappers into InvokeInDomain, since these are now per-domain.
24440
24441 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24442
24443         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24444         make some opcode emulation and intrinsic ops enabled/disabled 
24445         according to the architecture. More fixes.
24446
24447 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24448
24449         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24450
24451 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24454         arch-specific handling for 'this' and struct return type to
24455         arch-specific code.
24456
24457 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24458
24459         * aot.c: prevent divide by zero error when reporting (it happened with
24460         Accessibility.dll).
24461
24462 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24463
24464         * mini.h (inst_switch): Remove unused macro.
24465
24466 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24467
24468         * aot.c:
24469         (load_aot_module): free 'info->methods' and 'info' properly. No more
24470         "free(): invalid pointer blah" messages when you have an old aot
24471         compiled assembly.
24472
24473 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24474
24475         * jit-icalls.c, mini.c: Added support for context static fields.
24476
24477 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * mini.c (mono_method_blittable): Methods which set LastError are not 
24480         blittable either. Fixes #51108.
24481         
24482 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24483
24484         * mini.c: flush icache.
24485         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24486
24487 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24488
24489         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24490
24491 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24492
24493         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24494         safe on IA32.
24495
24496         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24497         vararg calls.
24498
24499         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24500
24501 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24502
24503         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24504         instruction when the result is discarded.
24505
24506         * iltests.il (test_0_div_regalloc): New regression test.
24507
24508         * arrays.cs: Fix compilation error.
24509
24510 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24511
24512         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24513         float rules to inssel-x86.brg: sane architectures with FP registers
24514         don't need to implement these rules.
24515
24516 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24517
24518         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24519
24520 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24523         implementation of 32 bit systems.
24524
24525 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24526
24527         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24528         (Jeroen Zwartepoorte).
24529
24530 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24531
24532         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24533         the caller and the callee matches.
24534         
24535         * mini.c (mono_method_to_ir): Add comment.
24536
24537         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24538         signbit is missing on some platforms.
24539
24540 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24541
24542         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24543
24544         * mini.c (setup_jit_tls_data): Call the new function.
24545         
24546         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24547
24548         * mini-x86.c: Add experimental support for fast access to the lmf
24549         structure under NPTL/Linux 2.6.x.
24550
24551 2003-11-06  Martin Baulig  <martin@ximian.com>
24552
24553         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24554         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24555         the debugger.
24556
24557 2003-11-02  Martin Baulig  <martin@ximian.com>
24558
24559         * mini.c (inflate_generic_field): New static method.
24560         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24561         generic instance and the field is declared in a generic type, call
24562         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24563
24564 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24565
24566         * mini.h mini.c (mono_method_same_domain): New function to return
24567         whenever the caller and the callee are in the same domain.
24568
24569         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24570
24571 2003-10-30  Martin Baulig  <martin@ximian.com>
24572
24573         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24574         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24575         method parameters.
24576         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24577         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24578
24579 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24580
24581         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24582         propagation.
24583
24584         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24585         object here, so it is in the correct appdomain etc.
24586
24587 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24588
24589         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24590         already done.
24591         (mono_method_to_ir): Avoid freeing the type created returned from
24592         mono_type_create_from_typespec, since it is put into an internal cache
24593         by the function. Fixes pointer.exe.
24594
24595         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24596         trampolines for icalls and pinvokes as well. Fixes #33569.
24597
24598 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24599
24600         * mini.c: Update after appdomain changes.
24601
24602         * mini.c (mono_jit_compile_method_inner): Allways compile native
24603         method wrappers in the root domain, since there can only be one
24604         instance of them, whose address is stored in method->info.
24605
24606 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24607
24608         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24609         environment variable. Instead detect automatically whenever running
24610         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24611         valgrind.h.
24612
24613 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24614
24615         * trace.c, trace.h: New files that implement the new trace option
24616         parsing. 
24617
24618         * driver.c: Document new --trace options.
24619
24620         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24621         mini-x86.c: Apply:
24622
24623         -       if (mono_jit_trace_calls)
24624         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24625
24626         * mini.h: prototypes.
24627         
24628 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24629
24630         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24631
24632         * mini.c inssel.brg: Implement typedefbyref opcodes.
24633
24634         * mini.c (mono_jit_compile_method): Remove unused local variable.
24635
24636         * mini.c (mono_jit_compile_method_inner): Ditto.
24637         
24638 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24639
24640         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24641         
24642         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24643
24644 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24645
24646         * mini.c (mono_no_aot): Remove unused global variable.
24647
24648         * mini.c: Thread safety fixes.
24649
24650 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24651
24652         * mini.c (mono_create_class_init_trampoline): Add a lock around
24653         class_init_hash_addr.
24654
24655         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24656         #30073.
24657
24658         * mini.c: Decompose the NEWARR instruction before decomposing its
24659         arguments. Fixes #30073.
24660
24661 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24662
24663         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24664         convention.
24665
24666 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24667
24668         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24669
24670         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24671
24672         * driver.c: Add support for compiling icall wrappers to --compile.
24673
24674 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24675
24676         * inssel.brg: The empty value in class->interface_offsets is -1, not
24677         0. Fixes #49287.
24678
24679 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24680
24681         * objects.cs: New test for 'is' operator on an array of interfaces.
24682
24683 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24684
24685         * tramp-ppc.c: update trampoline code to support jumps
24686         and class initialization.
24687
24688 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24689
24690         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24691
24692         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24693
24694         * inssel.brg (OP_UNBOX): Remove unused rule.
24695
24696         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24697         region instead of one for each method. Fixes #47813.
24698
24699 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24700
24701         * exceptions.cs (test_0_nested_finally): New regression test for
24702         nested exception handlers.
24703
24704         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24705
24706         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24707
24708         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24709         inlining.
24710
24711         * mini.c (mono_method_check_inlining): Make the inlining limit 
24712         configurable by an environment variable.
24713         
24714         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24715
24716         * mini.h: Bump AOT file version.
24717
24718         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24719         token, store the image along with the token, since the token might not 
24720         refer to the same image as the method containing the relocation, 
24721         because of inlining.
24722
24723 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24724
24725         * mini.c (mono_precompile_assemblies): New function to compile
24726         all methods in all loaded assemblies.
24727
24728         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24729
24730         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24731         iassign and fassign to int*, since they can contain large negative
24732         values if the register is spilled. Also added some comments. Fixes
24733         #45817.
24734
24735         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24736         under Win32. Fixes #42964.
24737
24738 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24739
24740         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24741
24742         * aot.c: Added support for AOT compiling methods which contain calls
24743         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24744         handled.
24745         
24746         * driver.c (compile_all_methods): Run the compilation in a thread
24747         managed by mono. Fixes #44023.
24748
24749         * mini.c (mono_codegen): Print full method name in verbose output.
24750
24751         * mini-x86.c (mono_arch_patch_code): Fix warning.
24752         
24753         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24754         jumps, since the method we are jumping to might be domain-specific.
24755
24756         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24757
24758 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24759
24760         * inssel.brg: string chars are unsigned.
24761
24762 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24763
24764         * TODO: New todo item.
24765
24766         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24767         which calls mono_runtime_class_init and patches the call site to
24768         avoid further calls.
24769         (mono_arch_create_class_init_trampoline): New arch specific function 
24770         to create a class init trampoline.
24771         (create_trampoline_code): Generalized so it can create
24772         class init trampolines as well.
24773
24774         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24775         (mono_create_class_init_trampoline): New function to create and cache
24776         class init trampolines.
24777         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24778         vtable given the address of a class init trampoline. Used by the
24779         patching process.
24780         (mono_codegen): Generate a call to a trampoline instead of
24781         mono_runtime_class_init in LDSFLD[A].
24782         (mono_codegen): Add relocations for the new trampoline.
24783         
24784         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24785         MONO_PATCH_INFO_CLASS_INIT.
24786
24787         * mini.h: Bump AOT version number.
24788
24789         * aot.c: Create a copy of the loaded code instead of using the original
24790         so methods which call each other will be close in memory, improving
24791         cache behaviour.
24792         
24793         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24794         patch since it breaks the regression tests.
24795         
24796         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24797         for the register saving instruction sequence since the 
24798         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24799
24800 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24801
24802         * TODO: Fix todo item && remove another.
24803
24804 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24805
24806         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24807         previous checkin.
24808
24809         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24810         function of the module.
24811
24812         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24813         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24814         --no-aot command line option.
24815
24816 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24817
24818         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24819         by Bernie Solomon (bernard@ugsolutions.com).
24820
24821         * inssel.brg: Refactor the interface offset table related code into
24822         its separate functions and add support for the AOT case.
24823
24824 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24825
24826         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24827         
24828         * aot.c: Added mono_aot_verbose variable and made all debugging
24829         output depend on the value of this variable.
24830
24831         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24832         method_label and info_label.
24833
24834         * mini.h mini-x86.c aot.c: Added a new relocation type 
24835         MONO_PATCH_INFO_IID for klass->interface_id.
24836
24837         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24838         the MonoJitInfo structure.
24839
24840         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24841         a non-root appdomain in shared mode.
24842
24843 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24844
24845         * aot.c: make aot loader less verbose. Remove free of unused variable.
24846
24847 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24850
24851         * .cvsignore: Added *.dll.
24852
24853         * mini.c (mono_print_tree_nl): New function callable while debugging.
24854
24855         * mini.c (mono_print_code): Export this.
24856
24857         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24858         patched code.
24859
24860 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24861
24862         * mini.h (MonoCompile): Added 'jit_info' field.
24863
24864         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24865         the cfg structure, since it is needed by the AOT compiler.
24866
24867         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24868
24869         * aot.c: A major rewrite. Changes include:
24870         - save exception tables for methods which have them.
24871         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24872         to g_module_symbol.
24873         - reworked the file format so it is now much smaller and needs
24874         fewer relocation entries.
24875         
24876 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24877
24878         * aot.c (load_aot_module): Fix build bustage on platforms without
24879         Boehm GC.
24880
24881 2003-09-04  Martin Baulig  <martin@ximian.com>
24882
24883         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24884
24885 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * TODO: Some new optimization ideas.
24888
24889         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24890
24891         * aot.c: Save the optimization flags used to compile the code into
24892         the AOT module.
24893
24894         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24895         support emitting domain specific code.
24896         
24897         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24898         no longer domain neutral. It can be made domain neutral by compiling 
24899         with --optimize=shared.
24900
24901         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24902         between appdomains.
24903
24904         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24905         loading of AOT code.
24906
24907         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24908         
24909         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24910         if there is no domain neutrality information.
24911
24912 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24913
24914         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24915         format version into the generated library.
24916
24917         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24918         callee method into the caller since one of them could be shared.
24919
24920         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24921         system exceptions from AOT code now works.
24922
24923         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24924         method if it is domain neutral and the callee is not.
24925
24926         * graph.c (cfg_emit_one_loop_level): Fix warning.
24927
24928 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24929
24930         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24931         last checkin.
24932
24933 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24934
24935         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24936         is needed  by code which is executed before mono_runtime_init ().
24937         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24938         
24939         * mini.c (mono_thread_abort): Fix warning.
24940         (mono_jit_compile_method): Call static constructor in the AOT case too.
24941
24942         * aot.c (mono_compile_assembly): Fix warning.
24943
24944 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24945
24946         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24947
24948 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24951
24952         * cpu-pentium.md: Fix the length of call opcodes so they include the
24953         ESP restoring instruction. Fixes #47968.
24954
24955 2003-08-28  Martin Baulig  <martin@ximian.com>
24956
24957         * mini-x86.c (mono_arch_call_opcode): Added support for
24958         MONO_TYPE_GENERICINST.
24959
24960         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24961
24962 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24963
24964         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24965         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24966
24967         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24968         metadata_section.
24969
24970 2003-08-26  Martin Baulig  <martin@ximian.com>
24971
24972         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24973         when reporting an error, set this to the actual error location.
24974         (mono_method_to_ir): Report the correct error location if
24975         get_basic_blocks() returned an error.
24976
24977 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24978
24979         * mini.c (mono_type_blittable): OBJECT is not blittable.
24980         (mono_method_blittable): Methods which have marshalling descriptors
24981         are not blittable either. Fixes #47842.
24982
24983 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24984
24985         * driver.c mini.c: Use an environment variable instead of a global 
24986         variable. Also fix the build.
24987
24988         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24989         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24990         reporting this. 
24991
24992         * driver.c mini.c: Added --with-valgrind option to turn off some
24993         code which prevents mono from running under valgrind.
24994
24995         * mini.c (mono_emit_call_args): Fixed warning.
24996
24997         * mini.c (mono_emulate_opcode): Fixed warning.
24998
24999 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25000
25001         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
25002         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
25003         regalloc.c, regalloc.h: specify available registers in arch-specific
25004         code and support floats in the regallocator (patch by Laurent Morichetti 
25005         <l_m@pacbell.net>)
25006
25007 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25008
25009         * mini.c: mono_thread_current() can be called only after
25010         mono_runtime_init(): rearrange code to not call it early on.
25011
25012 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25013
25014         * mini.c: allocate jump tables in the code mempools.
25015
25016 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25017
25018         * mini.c, mini.h: make sure per-thread data allocated by the jit is
25019         freed.
25020
25021 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
25022
25023         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
25024         12 to 16.  This fixes bug #47453.
25025
25026
25027 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25028
25029         * mini-ppc.c: fixed indexed load and unsigned compares.
25030
25031 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
25032
25033         * mini.c: reenabled installation of handler for
25034           thread abort signal.
25035
25036 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25037
25038         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
25039         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
25040         until it's fixed and actually useful.
25041
25042 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25043
25044         * inssel-long32.brg: couple more opcodes implemented.
25045
25046 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25047         
25048         * mini-sparc.c: Even more opcodes implemeted.
25049
25050 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
25051
25052         * mini-sparc.c: More opcodes implemented.
25053
25054 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25055
25056         * mini-sparc.c: More opcodes implemented.
25057
25058 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25059
25060         * inssel-sparc.brg: Add some needed rules.  Direct
25061         copy from PPC.
25062         * Makefile.am: Use inssel-sparc.brg
25063         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25064         an assert happy for now.
25065
25066 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25067
25068         * mini-sparc.c: Fixed compile errors.
25069         * exceptions-sparc.c: Same.  We now produce a mono binary 
25070         on sparc-linux.  Yea.
25071
25072 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25073
25074         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25075         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25076         They compile, but do not work.
25077
25078 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25079
25080         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25081         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25082         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25083         (ct@gentoo.org).
25084
25085 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25086
25087         * mini.c: more opcodes implemented and better support for generics.
25088
25089 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25090
25091         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25092         * mini.c, mini.h: first cut at generics support: some new instructions 
25093         added and changed the behaviour of some of the existing ones.
25094
25095 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25096
25097         * mini.c: Removed definition of metadata_shared mutex here.
25098
25099 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25100
25101         * mini-x86.c: make vararg calls work for instance methods.
25102
25103 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25104
25105         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25106         returns the arguments in a separte list, now.
25107
25108 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25109
25110         * aot.c, mini.c: updates for array type representation changes.
25111
25112 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25113
25114         * mini.c: register function to perform jit shutdown.
25115
25116 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * mini.c: use a faster allocator if possible.
25119
25120 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25121
25122         * aot.c: some cleanups and portability changes.
25123
25124 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25125
25126         * mini.c: use faster allocation for CEE_BOX if possible.
25127
25128 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25129
25130         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25131         Moved inlined mempcy code to its own function so that is can be
25132         reused. Added an inline memset function as well (optimized initobj).
25133         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25134
25135 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25136
25137         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25138
25139 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25140
25141         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25142         arch code can setup the cpu for CLR execution, if needed.
25143         We use it on x86 to set the precision of FP operations.
25144
25145 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25146
25147         * mini.c: disable some optimizations if we can guess they'll cost too
25148         much for a given method.
25149
25150 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25151
25152         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25153         
25154 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25155         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25156         info collection support.
25157
25158 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25159
25160         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25161         is now implemented in the profiling API. Get rid of a couple of
25162         unnecessary global variables.
25163
25164 2003-06-15  Nick Drochak <ndrochak@gol.com>
25165
25166         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25167         * cpu-g4.md: add op_bigmul and op_bigmul_un
25168         * cpu_pentium.md: add op_bigmul_un
25169         * inssel-long32.brg: add rule for unsigned bigmul
25170         * mini-ops.h: define OP_BIGMUL_UN
25171         * mini-x86.c: THE BUG: handle (un)signed properly
25172         * mini.c: choose unsigned opcode if needed.
25173         This set of patches fixes bug #44291
25174
25175 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25176
25177         * mini.c (optimize_branches): improved to handle all kinds of
25178         conditional branches.
25179
25180 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25181
25182         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25183         don't raise exceptions.
25184
25185 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25186
25187         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25188         to arch-specific files.
25189
25190 2003-06-09  Martin Baulig  <martin@ximian.com>
25191
25192         * Makefile.am (libs): Added $(LIBGC_LIBS).
25193
25194 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25195
25196         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25197         and OP_ATAN (fixes bug#44293).
25198
25199 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25200
25201         * Makefile.am, mini-x86.c: rename cpu description array to
25202         pentium_desc, since some compilers define the 'pentium' preprocessor
25203         symbol.
25204
25205 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25206
25207         * mini.c (mini_select_instructions): add explicit branch if the
25208         following block is not the false target of a conditional branch -
25209         we need this with any optimization that reorder or remove bblocks
25210
25211         * mini.c (optimize_branches): bug fixes
25212
25213 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25214
25215         * mini.c (mono_method_to_ir): inline static readonly fields
25216
25217         * ssa.c (fold_tree): start cfold support for long (very simple
25218         cases only)
25219
25220         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25221
25222 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25223
25224         * inssel.brg: fixed memcpy (bug #44219).
25225
25226 2003-06-05  Dick Porter  <dick@ximian.com>
25227
25228         * driver.c: Set the glib log levels to not abort if g_message
25229         recurses.
25230
25231         g_set_prgname() has to happen before mini_init() so that the
25232         process handle gets the info.
25233         
25234 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25235
25236         * driver.c: add intrins to the default optimizations to get wider
25237         exposure.
25238
25239 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25240
25241         * mini.h: some large basic blocks will overflow a 16-bit
25242         integers for symbolic registers.
25243
25244 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25245
25246         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25247         (mono_arch_output_basic_block): fix bug 43499 
25248
25249 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25250
25251         * mini.c: kill duplicated definition of mono_debug_format.
25252
25253 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25254
25255         * mini-x86.c, arrays.cs: fixed register allocation bug.
25256
25257 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25258
25259         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25260
25261         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25262
25263 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25264
25265         * mini.c:
25266         (print_method_from_ip): also print source location information if
25267         available.
25268
25269 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25270
25271         * mini.c (mono_find_block_region): bug fix in region code
25272         (mini_method_compile): enable removing unreachable code again, but
25273         only in methods without exception clauses.
25274
25275 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25276
25277         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25278         Implemented arglist opcode and handling of TypedReference type.
25279         Fixed x86 call convention when a structure is returned.
25280         Minimal support for calling static vararg methods.
25281
25282 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25283
25284         * mini.c (mini_method_compile):  always remove unreachable code,
25285         because the code in them may be inconsistent  (access to dead
25286         variables for example).
25287
25288 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25289
25290         * driver.c, debug-mini.c: warning fixes.
25291
25292 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25293
25294         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25295
25296 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25297
25298         * mini.c: thread-static fields are registered in mono_class_vtable(),
25299         so ensure the function is called before checking for them.
25300
25301 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25302
25303         * mini.c (optimize_branches): fix for bug 43586
25304
25305         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25306         overflow (fixes Bug #43639)
25307
25308 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25309
25310         * mini.c, objects.cs: allow the use of stobj for primitive types.
25311
25312 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25313
25314         * mini.c: be less strict about argument checking until we support
25315         running the verifier.
25316
25317 2003-05-27  Nick Drochak <ndrochak@gol.com>
25318
25319         * basic-long.cs: tests for (ulong)int * (ulong)int also
25320         * mini.c: use the same trick for (ulong)int * (ulong)int
25321
25322 2003-05-27  Nick Drochak <ndrochak@gol.com>
25323
25324         * basic-long.cs: add regression test for (long)int * (long)int
25325         * cpu-pentium.md: add op_bigmul specification
25326         * inssel-long32.brg: add OP_BIGMUL rule
25327         * mini-ops.h: add OP_BIGMUL
25328         * mini-x86.c: register allocator: handle case where src1 needs to be
25329         in EAX.
25330         * mini.c: substitute special BIGMUL opcode in the tree for 
25331         (long)int * (long)int
25332
25333 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25334
25335         * jit-icalls.c: call the type ctor on field access if needed.
25336
25337 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25338
25339         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25340         to a method (including results of ldelema, bug#43207).
25341
25342 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25343
25344         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25345         colors to show exception handler blocks.
25346
25347         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25348         (fix for pinvoke7.cs).
25349
25350 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25351
25352         * mini.h, mini.c: ensure correct initialization order for types that
25353         require it. Prepare for lazy compilation of jit icall wrappers.
25354         Provide a name for opcode emulation to reduce unneeded mallocing.
25355
25356 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25357
25358         * mini-x86.c: better register restoring code and profiling
25359         support for tail calls.
25360
25361 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25362
25363         * mini.h, driver.c: prepare for leaf methods optimization.
25364
25365 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25366
25367         * mini.c: get targets of branches before converting a method.
25368
25369 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25370
25371         * mini.c (optimize_branches): added some experimental code (disbaled) 
25372
25373 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25374
25375         * mini.c (optimize_branches): fix branch to branch optimization 
25376
25377         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25378
25379         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25380
25381         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25382
25383         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25384         if needed.
25385
25386 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25387
25388         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25389         enable use of interface variables again.
25390
25391         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25392         I1 to registers because there is no simply way to sign extend 8bit
25393         quantities in caller saved registers on x86.
25394
25395         * inssel-float.brg: set costs of some rules to 2 so
25396         that monobure always select the arch. specific ones if supplied,
25397         regardless of the order we pass the files to monoburg.
25398
25399 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25400
25401         * mini.c, mini-x86.c: since the magic trampoline for jumps
25402         can't patch the code directly, we do it as soon as the
25403         method gets compiled.
25404
25405 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25406
25407         * mini-x86.c, mini.h: introduce a new patching method
25408         to support CEE_JMP and tail calls.
25409         * mini.c: obey tail.call. Don't precompile methods target
25410         of CEE_JMP.
25411         * tramp-x86.c: new trampoline code to handle methods
25412         reached through a jump.
25413
25414 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25415
25416         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25417         bit values to registers
25418
25419 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25420
25421         * mini.c (mono_compile_get_interface_var): share interface
25422         variables if possible.
25423
25424 2003-05-16  Martin Baulig  <martin@ximian.com>
25425
25426         * debug-mini.c (mono_init_debugger): New function to initialize
25427         the debugger.  This is not in the debugger since it needs to
25428         access some of mini's internals.
25429
25430 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25431
25432         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25433
25434 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25435
25436         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25437         for value type handling.
25438
25439 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25440
25441         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25442         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25443
25444 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25445
25446         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25447           the constructor through a proxy.
25448
25449 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25450
25451         * jit-icalls.c, inssel.brg: fixes to array element address
25452         calculations.
25453
25454 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25455
25456         * mini-x86.c (is_regsize_var): allocate pointer to registers
25457
25458 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25459
25460         * driver.c: fixed typo, added intrins to the set of optimizations
25461         tested with regressions.
25462
25463 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25464
25465         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25466         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25467         test case.
25468
25469 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25470
25471         * inssel.brg: remove some common pop instructions without side effects
25472
25473 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25474
25475         * inssel-x86.brg: fixed thinko in int to double conversions.
25476
25477 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25478
25479         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25480
25481 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25482
25483         * inssel-long32.brg: two more missing instructions.
25484
25485 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25486
25487         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25488         if not already set.
25489
25490 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25491
25492         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25493         correctly.
25494
25495         * basic-float.cs: Added tests for negative zero.
25496
25497 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25498
25499         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25500         a couple of missing operations for long casts, with test cases.
25501
25502 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25503
25504         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25505
25506 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25507
25508         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25509         code size estimation.
25510
25511 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25512
25513         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25514         abstract methods (fix bug 42542)
25515
25516         * aot.c: add ability to handle array types
25517         
25518 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25519
25520         * mini.c: Call the _specific versions of the object allocation
25521         functions if possible.
25522
25523 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25524
25525         * driver.c: call setlocale ().
25526
25527 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25528
25529         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25530         windows build.
25531
25532 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25533
25534         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25535
25536         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25537         wrappers (fix bug 42122)
25538
25539 2003-05-04  Martin Baulig  <martin@ximian.com>
25540
25541         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25542
25543         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25544         s/mini_set_defaults/mono_set_defaults/g.
25545
25546 2003-05-04  Martin Baulig  <martin@ximian.com>
25547
25548         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25549
25550 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25551
25552         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25553         (reported by Don Roberts).
25554
25555 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25556
25557         * mini.c: temporarily work around two bugs for this release.
25558
25559 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25560
25561         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25562         that contains -export-dynamic and it makes using the ld script
25563         useless.
25564         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25565
25566 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25567
25568         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25569         specific cpu.
25570
25571 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25572
25573         * mini.c: make sure leave calls all the needed finally blocks,
25574         even when the target jumps out of multiple exception clauses.
25575
25576 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25577
25578         * ldscript, Makefile.am: add linker script to reduce the number of
25579         exported symbols (should also fix the issues with libwine defining
25580         some of the same symbols in io-layer).
25581
25582 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25583
25584         * driver.c (mini_main): Avoid assertion when no file name is given on 
25585         the command line.
25586
25587 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25588
25589         * driver.c: added --version/-V command line option.
25590         Added the inline optimization in the regression tests.
25591
25592 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25593
25594         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25595         to the type in the method signature (fixes bug#42134).
25596
25597 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25600
25601 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25602
25603         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25604
25605 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25606
25607         * driver.c: fixed bug #42100.
25608
25609 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25610
25611         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25612
25613 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25614
25615         * mini.c: moved most of the code required to do inlining to its own
25616         function so it can be reused. Inline also ctors if appropriate.
25617
25618 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25619
25620         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25621         the runtime can call mono API functions.
25622
25623 2003-04-27  Martin Baulig  <martin@ximian.com>
25624
25625         * debug-mini.c (mono_debug_init_method): Added
25626         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25627         send a notification to the debugger.
25628
25629         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25630         running in the Mono Debugger, just pass the breakpoint number to
25631         mono_debug_init_method().
25632
25633         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25634
25635 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25636
25637         * mini.c: allow some more unsafe compares.
25638
25639 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25640
25641         * mini-x86.c, Makefile.am: make distcheck works (partially from
25642         a patch by Richard Lee <r.h.lee@attbi.com>).
25643         * regset.c, regset.h: removed, they are unused.
25644
25645 2003-04-25  Dick Porter  <dick@ximian.com>
25646
25647         * driver.c: Usage reports the name as 'mono' not 'mini'
25648         * exceptions-x86.c: Build and run on freebsd
25649
25650 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25651
25652         * Makefile.am: install the program with the 'mono' name and
25653         the library as libmono instead of mini and libmini.
25654
25655 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25656
25657         * driver.c: provide the APIs for the embedding interface of the old jit.
25658
25659 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25660
25661         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25662
25663 2003-04-23  Martin Baulig  <martin@ximian.com>
25664
25665         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25666
25667         * driver.c: Added `--debug' command line argument to enable
25668         debugging support.
25669
25670 2003-04-23  Martin Baulig  <martin@ximian.com>
25671
25672         * debug.[ch]: Removed.  The code is now in
25673         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25674
25675         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25676         last six months.
25677
25678 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25679
25680         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25681
25682 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25683
25684         * mini.c:
25685         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25686         mono_domain_finalize.
25687         (mini_method_compile): use mono_method_profile* if the the option is
25688         enabled.
25689
25690 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25691
25692         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25693         methods with their wrapper.
25694
25695         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25696         methods with their wrapper.
25697
25698         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25699         their wrapper.
25700
25701         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25702         wrapper.
25703
25704         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25705         methods.
25706
25707 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25708
25709         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25710
25711 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25712
25713         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25714         of the mempool. This is slightly faster and uses less memory
25715
25716 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25717
25718         * mini.c: avoid O(n) allocation for variables.
25719
25720 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25721
25722         * mini.c: handle items on the stack after inlining methods.
25723
25724 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25725
25726         * mini.c: make the method->opcode optimization dependent
25727         on MONO_OPT_INSTRINS and do it lazily.
25728
25729 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25730
25731         * driver.c: print overall results at the end of regression run.
25732
25733 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * inssel.brg: don't overwrite symbolic registers.
25736
25737 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25738
25739         * inssel-x86.brg: fix conversion from long to float.
25740
25741 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25742
25743         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25744
25745 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25746
25747         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25748
25749         * driver.c: Added --print-vtable option as in the old JIT.
25750
25751 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25752
25753         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25754
25755 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25756
25757         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25758
25759 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25760
25761         * mini.c regalloc.c regalloc.h: Fix memory leak.
25762
25763 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25764
25765         * aot.c (mono_aot_get_method): register all used strings
25766
25767 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25768
25769         * mini.c: always intern strings references with ldstr at compile time.
25770
25771 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25772
25773         * Makefile.am: add BUILT_SOURCES.
25774
25775 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25776
25777         * driver.c: give a better error message when the assembly to execute
25778         doesn't have an entry point.
25779
25780 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25781
25782         * Makefile.am: added hack for automake
25783
25784         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25785         correct sematics.
25786
25787         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25788
25789 22003-04-07  Martin Baulig  <martin@ximian.com>
25790
25791         * Makefile.am: Added Makefile.am.
25792
25793         * debugger-main.c: Removed, this is now in the debugger where it
25794         belongs.
25795
25796         * mini.pc.in: Call this package `mini' for the moment.
25797
25798
25799
25800
25801
25802
25803
25804
25805
25806
25807
25808
25809
25810
25811